我在Linux的红帽机器上,正在尝试运行一个启动Java应用程序的shell脚本。 它昨天运行得很好,但今天我得到这个错误:
Error occurred during initialization of VM java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:714) at java.lang.ref.Reference.<clinit>(Reference.java:162)
免费-m
total used free shared buffers cached Mem: 15951 14754 1196 66 217 3208 -/+ buffers/cache: 11328 4622 Swap: 15999 0 15999
我已经在这个问题上做了一堆阅读,但我不知道如何解决在我的系统上。 这似乎是一个系统资源问题。 谁能帮忙?
这是一个难以回答的问题,因为我们不知道你的程序是干什么的。 但底线是, java.lang.OutOfMemoryError通常是由您的应用程序的stream量高峰或内存泄漏引起的。
您应该使用指定Java虚拟机的内存分配池的两个java标志: -Xmx (分配的最大内存)和-Xms (分配的初始内存)
玩数字,看看有什么作品。 如果您看到java.lang.OutOfMemoryError错误,那么只需增加内存数量并重新启动java进程。
实例化JVM时指定-Xmx128m 。 试着增加这个价值。
检查为用户设置的最大打开文件。 您可能需要增加。 使用pidstat(pidstat -h -r -u -p $ javapid | grep -v“Command”)和进程进程号(ps aux | grep'java'| grep“application name”| grep -v grep | wc -l)。 为用户设置的MUP(最大用户进程)是重要的。