Linux - Java - Error occurred during initialization of VM - java

I have gone through SO for similar questions but none of them gave a correct working answer w.r.t my setup (the answers on the other questions were applicable for Windows machine, 64-bit).
I have the following setup:
$
$ uname -a
Linux localhost.localdomain 3.8.4-102.fc17.i686 #1 SMP Sun Mar 24 13:20:55 UTC 2013 i686 i686 i386 GNU/Linux
$
$ java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Server VM (build 23.7-b01, mixed mode)
$
$ javac -version
javac 1.7.0_17
$
$
$ free -m
total used free shared buffers cached
Mem: 3520 3435 85 0 472 1531
-/+ buffers/cache: 1431 2089
Swap: 5567 0 5567
$
$
$ echo $JAVA_HOME
/usr/java/jdk1.7.0_17
$
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/usr/java/jdk1.7.0_17/bin
$
I am getting the following error when attempting to run java programs!
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Do I need to upgrade to 64-bit OS and install 64-bit JVM? or should I upgrade my hardware with more RAM?

Please visit Running java with JAVA_OPTS env variable, HEX provides that you should set up _JAVA_OPTIONS variable.

You need to check if you have any JAVA_OPTS defined: echo $JAVA_OPTS. Do you specify any heap size?
First you can try to allocate more RAM for your machine.
Second, you can try and run your java command with specified MaxHeapSize and maybe Xmx/Xms.
Check out Tuning the JVM heap sizes in the Oracle's docs.

Looking at the memory, you just have 85mb available. You might want to free some memory before launching your program. Also, try running it with the following command line options:
-Xmx512m, -XX:MaxHeapSize=256m

Related

How do I un-install a specific open jdk 1.8.0_322 which I suspect was installed using homebrew. All my trials have failed

I need to un install my JDK 1.8 version from my Mac 12.2.1 Montere. However much I try I could not get rid of it.
When I run $ java -version, I get
openjdk version "1.8.0_322"
OpenJDK Runtime Environment Corretto-8.322.06.1 (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM Corretto-8.322.06.1 (build 25.322-b06, mixed mode)
When I run $ which java, I get
/usr/bin/java
When I run $ /usr/bin/java -version, I get
openjdk version "1.8.0_322"
OpenJDK Runtime Environment Corretto-8.322.06.1 (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM Corretto-8.322.06.1 (build 25.322-b06, mixed mode)
When I run $ ls -l /Library/Java/JavaVirtualMachines/ , I get
total 8
-rw-r--r-- 1 root wheel 98 Feb 4 11:10 package-lock.json
When I run $ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_322.jdk
I get to nothing, except being asked for password
I want to manage my Java/JDK installation, management etc. with SDKMAN alone. With homebrew and sdkman it is getting confusing.
Following the docs => https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-macos.htm#JSJIG-GUID-F9183C70-2E96-40F4-9104-F3814A5A331F
Note:
Do not attempt to uninstall Java by removing the Java tools from
/usr/bin. This directory is part of the system software and any
changes will be reset by Apple the next time that you perform an
update of the OS.
In your Terminal go to /Library/Java/JavaVirtualMachines.
If the folder does not exists, it can be at higher directory before "/Users"
Remove the directory whose name matches the following format by executing the rm command as a root user or by using the sudo tool
/Library/Java/JavaVirtualMachines/(your jdk1.8.0_322.jdk folder)
For example, once inside of JavaVirtualMachines, run:
$ rm -rf jdk1.8.0_322.jdk

Starting Stanford CoreNLP server - Java heap size error

I am trying to start Stanford CoreNLP server the link
The following command:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
generates error message:
Invalid maximum heap size: -Xmx4g
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Just in case, here is my java version:
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) Client VM (build 25.31-b07, mixed mode)
Any suggestions?
This is probably an issue with you running in 32-bit mode instead of 64-bit.
Try adding -d64 to your command.
This thread goes into more detail about this kind of error:
Avoiding Initial Memory Heap Size Error

MAVEN_OPTS ignored when setting java heap size

How is this possible? I do not understand linux correctly because I do not
know how this can happen. I believe there is something else happening here as im trying to set the max heap size to 1G and it is failing
The MAVEN_OPTS specify a heap of 1024m but the maven command fails because the heap is 4096m. The machine is 32 bit with 6G installed
Memory
$free -h
total used free shared buffers cached
Mem: 5.8G 3.8G 2.0G 186M 351M 2.1G
-/+ buffers/cache: 1.3G 4.4G
Swap: 5.8G 0B 5.8G
Maven
echo $MAVEN_OPTS
-Xms512m -Xmx1024m -XX:MaxPermSize=1024m
$ mvn -version
Invalid maximum heap size: -Xmx4096m
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Java
java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) Server VM (build 25.111-b14, mixed mode)
Linux
uname -a 102-Ubuntu SMP Tue Aug 11 14:28:35 UTC 2015 i686 i686 i686 GNU/Linux
Set again with below and try:
Linux:
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"
Windows
set MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"
I just ran across this same error, and the solution was provided to my via this blog post. In the post, it is stated;
Check mvn.bat: the MAVEN_OPTS is passed as JVM parameter directly:
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" %MAVEN_JAVA_EXE%
%MAVEN_OPTS% -classpath %CLASSWORLDS_JAR%
"-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%"
%CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
If we run set MAVEN_OPTS="-Xmx1024M -XX:MaxPermSize=256M",the previous
command would be replaced with %MAVEN_JAVA_EXE% "-Xmx1024M
-XX:MaxPermSize=256M" ...
If we run java "-Xmx1024M -XX:MaxermSize=256M" -version: we will see
same error message.
The solution is simple: We can run: set "MAVEN_OPTS=-Xmx1024M
-XX:MaxPermSize=256M" or remove the double quotes completely: set MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=256M
The value of MAVEN_OPTS would be with no surrounding double quotes.
This certainly addressed my issue.

PHP exec Java cmd failed with permission denied

I am currently writing some PHP scripts that need to invoke jar. I wrote a test script to test Java -version cmd.
echo exec('whoami');
echo '<hr/>';
exec('java -version', $out);
var_dump($out);
The page return as below:
apache
array(6) { [0]=> string(134) "OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007ff705000000, 2555904, 1) failed; error='Permission denied' (errno=13)" [1]=> string(1) "#" [2]=> string(76) "# There is insufficient memory for the Java Runtime Environment to continue." [3]=> string(100) "# Native memory allocation (malloc) failed to allocate 2555904 bytes for committing reserved memory." [4]=> string(57) "# An error report file with more information is saved as:" [5]=> string(29) "# /tmp/jvm-26720/hs_error.log" }
I have test the cmd in the console and it is normal.
[root#localhost ~]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
Is there anyone who can help me with this?
Update: Here is the hs_error.log
I had a similar issue. I duplicated it on the RedHat 7 (installed on the Amazon EC2).
Only when selinux was switched to the permissive mode - the issue was fixed.
Sudo or login as root
To check the status: $ sestatus or $ getenforce.
To turn it off:
temporary: $ setenforce 0.
permanently: edit /etc/selinux/config file
After deeper research, it looks that it is better to enable "apache to use the memory" and not turn off the mode:
setsebool -P httpd_execmem 1
More info here.

Error Building Hive on OS X 10.10.1 Yosemite: java.lang.OutOfMemoryError: Java heap space

Building Hive with Maven:
mvn clean install -Phadoop-2,dist
Java version:
$ java -version
Picked up _JAVA_OPTIONS: -Xmx2048m
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
I tried setting the following Parameters:
$ env | grep JAVA
JAVA_OPTS=-Xmx2048m
_JAVA_OPTIONS=-Xmx2048m
r$ env | grep MAVEN
MAVEN_OPTS=-Xmx2048m
I also tried editing pom.xml and set maven-surefire-plugin
<argLine>-Xmx2048m -XX:MaxPermSize=1024m</argLine>
The system is out of resources.
Consult the following stack trace for details.
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:462)
at java.util.HashMap.addEntry(HashMap.java:755)
at java.util.HashMap.put(HashMap.java:385)
at com.sun.tools.javac.parser.EndPosParser.storeEnd(EndPosParser.java:55)
at com.sun.tools.javac.parser.Parser.literal(Parser.java:561)
at com.sun.tools.javac.parser.Parser.term3(Parser.java:949)
at com.sun.tools.javac.parser.Parser.term2(Parser.java:683)
at com.sun.tools.javac.parser.Parser.term1(Parser.java:654)
at com.sun.tools.javac.parser.Parser.term(Parser.java:610)
at com.sun.tools.javac.parser.Parser.termRest(Parser.java:624)
...
You can unset _JAVA_OPTIONS, and set MAVEN_OPTS="-Xms2048m -Xmx4096m -XX:MaxPermSize=1024m". And you could install oracle java 7/8.

Categories

Resources