Error upon jar execution - unable to allocate file descriptor table - java

Upon trying to use a jar on the local linux machine, I am getting the following error:
library initialization failed - unable to allocate file descriptor table - out of memory
The machine has 32G RAM
I can provide additional information, if needed.
Any help would be appreciated.

In recent versions of Linux default limit for the number of open files has been increased significantly. Java 8 does the wrong thing of trying to allocate memory upfront for this number of file descriptors (see https://bugs.openjdk.java.net/browse/JDK-8150460). Previously this worked, when the default limit was much lower, but now it tries to allocate too much and fails. Workaround for this is to set a lower limit of number of open files (or use newer java):
$ mvn
library initialization failed - unable to allocate file descriptor table - out of memoryAborted
$ ulimit -n 10000
$ mvn
[INFO] Scanning for projects...
...

Had this happen to me on some Java applications and curiously all electron-based apps (such as Spotify) after upgrading my Manjaro Linux about a week ago (today is November 19, 2019).
What fixed it was this command (as root, sudo didn't do it:
echo >/etc/security/limits.d/systemd.conf "* hard nofile 1048576"
Then reboot
Hope this helps someone.

None of the other fixes I found online worked for me, however I noticed that the bug responsible for this defect is in Java 9, and has been resolved since.
I'm on ArchLinux so I notice that when I tried to start the elasticsearch.service in journalctl -xe it showed that for some reason JRE8 was running it, and indeed archlinux-java status showed that Java 8 was the default. Setting to Java 11 fixed the problem for me:
# archlinux-java set java-11-openjdk

Related

Android Studio - Unrecognized VM option 'MaxPermSize=256m'

I just installed Android Studio on Elementary OS 0.3 Freya and run it using the terminal. On my first start-up, however, there's an error message shown:
Gradle 'Test' project refresh failed
Unable to start the daemon process. This problem might be caused by
incorrect configuration of the daemon. For example, an unrecognized
jvm option is used. Please refer to the user guide chapter on the
daemon at http://gradle.org/docs/2.2.1/userguide/gradle_daemon.html
Please read the following process output to find out more:
Unrecognized VM option 'MaxPermSize=256m' Error: Could not create the
Java Virtual Machine. Error: A fatal exception has occurred. Program
will exit.
I read this and tried all the ways to solve it but to no avail. I did notice that his error was somewhat different from mine and thought that might be why I couldn't solve my problem using the ways suggested.
As I executed the .sh file on my terminal, it printed:
Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=250m;
support was removed in 8.0
(java:5094): Gtk-WARNING **: Unable to locate theme engine in
module_path: "pixmap"
Gtk-Message: Failed to load module "canberra-gtk-module"
I'm not sure whether it's related to the error or not. Please help.
In my case I had a line
org.gradle.jvmargs=-Xmx6408m -XX:MaxPermSize=6408m -XX:+HeapDumpOnOutOfMemoryError
in my gradle.properties file in the project structure.
removing -XX:MaxPermSize=6408m from that file fixed an issue
As it was already said in this thread, Permanent Generation was removed in Java 8, which is used in your case. I think, the easiest solution is to remove parameters associated with Permanent Generation during program execution.
Go to the directory where you have Android Studio. Then go to the bin/ subdirectory. Locate the following files, which contains Java Virtual Machine options:
studio.vmoptions
studio64.vmoptions
Open these files and locate line with MaxPerSize parameter. It should look as follows:
XX:MaxPermSize=256m
Remove this line in both files. I don't know if you are using 32-bit or 64-bit operating system, so you can update both files just in case.
I'm not sure if it will solve your problem, but I would try it in such situation. In my case, with this option and Java 8, I just get the warning, but Android Studio starts anyway. After removing this parameter, Android Studio still starts, but without warning. I'm using Ubuntu 14.04 LTS.
EDIT:
There is another solution for this problem described here: https://stackoverflow.com/a/27913562/1150795.
Go to File > Other Settings > Default Project Structure > JDK location and check the path.
In case of Ubuntu Linux, we can set /usr/lib/jvm/java-7-oracle as default JDK if we are using Oracle JVM. JDK 7 is the safest option for Android.
-XX:MaxPermSize was deprecated in JDK 8, marked as obsolete in JDK 16, and removed in JDK 17. It was superseded by the -XX:MaxMetaspaceSize option.
Change -XX:MaxPermSize to -XX:MaxMetaspaceSize solve my problem.
ref:
https://github.com/expo/expo-cli/issues/4196#issuecomment-1035850918
https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#removed-java-options
In my case opening $ANDROID_HOME/tools/lib/monitor-x86_64/monitor.ini and removing
XX:MaxPermSize=256m
from it did the job.
Oh I've solved this problem, I install Oracle JDK 9 when android studio runs on JDK 6 or JDK 7 (if I'm not mistaken).
so I uninstalled Oracle JDK 9, then download and install the JDK 7.
On MacOS the following clause in ./gradlew injects this option:
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\" \"-Xmx1024m\" \"-Xms256m\" \"-XX:MaxPermSize=1024m\""
fi
This file can be edited by hand after the project has been generated.
i had the same issue and i was able to solve it by adding this directly in the terminal
export JAVA_VERSION=1.8
and then try the

Constant dspace error java.lang.OutOfMemoryError: Java heap space

I have a DSpace server, after uprading from version 4.3 to 5.1, it constantly stops working after some hours with following error:
java.lang.OutOfMemoryError: Java heap space
I've read answers to the same questions, but they didn't help me.
My JAVA_OPTS: -Xmx4096M -Xms4096M -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
Here are my logs:
dspace.log.2015-04-21: http://jpst.it/ylU4
tomcat7-stderr.2015-04-20.log: http://jpst.it/ylTN
localhost_access_log.2015-04-20.txt: http://jpst.it/ylTT
I searched the internet for a solution and could not find one, does any one have a clue?
Your tomcat log file quite clearly says that it isn't using the JAVA_OPTS you're passing in:
INFO: Command line argument: -Xmx256m
In my experience, DSpace 5 needs at least 512MB; your 4GB look a little excessive unless your DSpace instance is very big / gets lots of traffic.
You aren't telling us what operating system you're using, so it's hard to give advice on how where to set these properly. Start with your tomcat startup script and/or the tomcat configuration files. On my Red Hat Enterprise Linux 6.6 boxes (with tomcat6), the correct place for the memory settings is /etc/tomcat6/tomcat6.conf.

ElasticSearch object heap space error at launch

I am new to ElasticSearch, but already in trouble.
My configuration:
Windows 7 Enterprise 64 bits
8 Gb RAM
I am unsuccessful at simply starting the instance, using elasticsearch.bat :
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.
Adter exploring SO forums as well as ElasticSearch support pages, here is what I tried:
setting min and/or max heap memory (using SET ES_MAX_MEM and SET ES_MIN_MEM on the command line before calling elasticsearch.bat) to various values, from 256m/512m to 256m/3g ==> no change in error message
setting heap size (using SET ES_HEAP_SIZE on the command line before calling elasticsearch.bat) to various values, from 256m to 3g ==> no change in error message
uninstalled my Java 7 environment and fresh installed Java 8 64 bits (checked through java -version on the command line) ==> no change in error message
Surprisingly enough, I can't seem to find any logging information (no 'logs' directory present in %ES_HOME% where the elasticsearch.org documentation states it should be...)
Would anyone point me to the right direction to get the thing up and running?
Thanks a lot
Finally got it sorted out by forcing JAVA_HOME to point to my fresh Java 8 install (seems 'java' command resorted to old java install although the Java 8 installer claimed it had cleaned previous installs).
Thanks a lot

Jenkins Maven Build 137 Error

I have a Maven project, which builds 6 separate Maven projects in Jenkins. The problem I face is that over the time the project build fails giving the 137 error code:
ERROR: Maven JVM terminated unexpectedly with exit code 137
The project could be built successfully using same Maven goals in the console, but in Jenkins it fails. By restarting Jenkins the problem can be resolved.
I have some static array lists. These lists are used for some test cases. Could this be a memory leak?
I was running into the same behavior on our build server. The error is IMHO not associated with the maven memory settings (i.e. MAVEN_OPTS) but rather with the memory of the underlying (Linux) machine itself (which Jenkins runs on).
The (rejected) Jenkins issue https://jenkins-ci.org/issue/12035 gives more detail on this matter:
For reference the status code 137 (128 + 9) typically means (can differ between flavours of unix). That the process was terminated by receipt of a signal. In this case signal 9 which is SIGKILL and unblockable kill.
If this is the case the underlying machine/OS needs more virtual memory. This can be added by either adding physical memory or swap space as appropriate.
You should try to increase the virtual memory of your machine.
Note:
This also explains why a Jenkins restart (temporarily) fixes the issue.
I believe you should increase the values of the memory settings - in MAVEN_OPTS on the Jenkins machine, e.g.
MAVEN_OPTS=-Xmx1.5G -XX:MaxPermSize=0.7G
If you machine has at least 2 processors and 4GB memory, your JVM will not only grab 1GB at startup but will turn -server mode, meaning memory will be retained for performance sake (source). If you have few JVMs running at the same time (several application components, maven builds etc.) you can easily get into low memory. And one of you JVM may be killed by Linux OOM Killer because you are low on resources on the machine.
Reduce memory footprint of your process which is directly impacted by jvm default Xmx, which most probably is far from what jvm actually need.
Give it additional java command line options
-Xmx256m -XX:MaxPermSize=512m
or configure system variable
MAVEN_OPTS=-Xmx256m -XX:MaxPermSize=512m
MaxPermSize have no use for java 8+
When running Maven via Jenkins I got this error:
ERROR: Maven JVM terminated unexpectedly with exit code 137
I accidently put an "and" in the MAVEN_OPTS parameter:
-Xmx1024m and -Xms1024m
Then, I got this error:
Error: Could not find or load main class and
ERROR: Failed to launch Maven. Exit code - 1
After, removing the 'and', I reran Jenkins and received this error:
java.lang.OutOfMemoryError: Java heap space
Finally, I increased the memory using Global MAVEN_OPTS:
-Xmx4096m -Xms4096m
This fixed the problem. So, this seems to be related to memory. However, it could be a machine/VM related issue (as #boskoop stated above) or a container issue (if JVM is run through Jenkins/Docker/etc).
I ran into the same error code. This error code does indeed seem related to JVM resource constraints in the Jenkins environment. I would suggest re-running the build a second time after the error occurs to see if you can get additional/different output, though this will certainly depend on which part of the build caused the resource issues (in my cause it was a Maven downloads).
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fb7cb000, 7331840, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 7331840 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /vagrant/args4java/hs_err_pid10470.log
ERROR: Maven JVM terminated unexpectedly with exit code 1
Finished: FAILURE

Java "Error occurred during initialization of VM" fix?

I was trying to make a Minecraft server and got the following error on startup:
Error occured 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.
I tried everything I could find: I created CLASS and CLASSPATH environmental variables that went to my Java's bin folder. I re-installed java, making sure it was 64 bit, as my computer is. Still, I get this error. Does anyone know a solution?
You are attempting to allocate more RAM than your system will allow you to allocate.
In your startup script, lower the values of your Xmx/Xms arguments.
Run the JVM with -XX:MaxHeapSize=256m (or any big number), and possibly -Xmx512m
I've actually noticed this issue when you try and take a dump of a service running java.
Try using psexec -s to execute your dump
I'm not sure why this seems to work on some servers and not others
I had this same error. Running the cmd as Administrator resolved it.
I encountered this error when I was trying to build selenium webdriver. as suggested above by Rogue that we need to reduce the allocated memory in the arguments.
I changed java heap size arguments as below
java $JAVA_OPTS -Xmx256m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=256m -jar third_party/jruby/jruby-complete.jar -X-C -S rake $*
I also faced this issue by My IntellijIDEA allocate more jvm memory space than system allocated.
My issued is resolved through just uninstall the JDK and install it again.
It happened to me also. My eclipse would not run. Uninstalled and reinstalled eclipse like 3 time and no luck. Came to this question during a google search, and Yasir's answer helped me out, because I also had IntelliJ installed into my DEV BOX recently. So deleted C:\Program Files\Java folder and reinstalled java into default install folder and it worked. I also had jdk in my system path from previous setup.
My issue was resolved after I reinstalled latest version of JDK.

Categories

Resources