Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VPS上的多个java应用程序导致java.lang.OutOfMemoryError:_Java_Linux_Multithreading_Memory_Vps - Fatal编程技术网

VPS上的多个java应用程序导致java.lang.OutOfMemoryError:

VPS上的多个java应用程序导致java.lang.OutOfMemoryError:,java,linux,multithreading,memory,vps,Java,Linux,Multithreading,Memory,Vps,运行一个应用程序时的内存(Minecraft服务器) 乌利米特 ulimit -s 8192 乌利米特 ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals

运行一个应用程序时的内存(Minecraft服务器)

乌利米特

ulimit -s
8192
乌利米特

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 1546762
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62987
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
Java版本

java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode, sharing)
当我尝试启动另一个Java应用程序时

java -jar bot.jar
[0,063s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached.
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
        at java.base/java.lang.Thread.start0(Native Method)
        at java.base/java.lang.Thread.start(Thread.java:803)
        at java.base/jdk.internal.ref.CleanerImpl.start(CleanerImpl.java:118)
        at java.base/java.lang.ref.Cleaner.create(Cleaner.java:203)
        at java.base/jdk.internal.ref.CleanerFactory.<clinit>(CleanerFactory.java:42)
        at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)
        at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:844)
        at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:247)
        at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:177)
        at java.base/java.util.jar.JarFile.<init>(JarFile.java:346)
        at java.base/java.util.jar.JarFile.<init>(JarFile.java:317)
        at java.base/java.util.jar.JarFile.<init>(JarFile.java:256)
        at java.base/sun.launcher.LauncherHelper.getMainClassFromJar(LauncherHelper.java:521)
        at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:747)
        at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)
java-jarbot.jar
[0063s][warning][os,thread]无法启动线程-pthread_创建失败(EAGAIN)属性:stacksize:1024k,guardsize:0k,已分离。
错误:发生JNI错误,请检查安装并重试
线程“main”java.lang.OutOfMemoryError中出现异常:无法创建本机线程:可能内存不足或已达到进程/资源限制
位于java.base/java.lang.Thread.start0(本机方法)
位于java.base/java.lang.Thread.start(Thread.java:803)
位于java.base/jdk.internal.ref.CleanerImpl.start(CleanerImpl.java:118)
位于java.base/java.lang.ref.Cleaner.create(Cleaner.java:203)
位于java.base/jdk.internal.ref.CleanerFactory(CleanerFactory.java:42)
位于java.base/java.util.zip.ZipFile$CleanableResource(ZipFile.java:724)
位于java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:844)
位于java.base/java.util.zip.ZipFile(ZipFile.java:247)
位于java.base/java.util.zip.ZipFile(ZipFile.java:177)
位于java.base/java.util.jar.JarFile。(JarFile.java:346)
位于java.base/java.util.jar.JarFile。(JarFile.java:317)
位于java.base/java.util.jar.JarFile。(JarFile.java:256)
位于java.base/sun.launcher.launchelper.getMainClassFromJar(launchelper.java:521)
位于java.base/sun.launcher.LaunchHelper.loadMainClass(LaunchHelper.java:747)
位于java.base/sun.launcher.LaunchHelper.checkAndLoadMain(LaunchHelper.java:655)

我试了这么多,真的不知道该怎么办了。上次我试图解决这个问题时,我不得不重新安装我的整个服务器,因为我对所有linux的东西都是新手。虚拟服务器的内存量有限。如果您的Java应用程序向操作系统请求过多内存,操作系统将拒绝,您将得到此类异常。解决方案:1)运行更少的Java应用程序,2)使其更小,3)为具有更多内存的VPS支付更多的钱。请注意,这个特定的失败发生在线程创建上。JVM正在为线程堆栈请求内存。。。在Java堆之外。问题可能是你的应用程序有太多的线程。。。或者通常使用过多的堆外内存。或者你只是把堆弄得太大了,JVM已经为此保留了所有可用的RAM。最后,问题可能是交换空间,但在VPS上,你可能希望避免使用交换。。。因为性能会很差。这两个应用程序在单独运行时都不会出现问题,而且不会出现这样的错误。由于应用程序占用大量内存,我将MC服务器限制为用户最大4GB,而另一个应用程序应仅运行2GB,但如果其中一个应用程序运行,另一个应用程序无法启动。“我将MC服务器限制为用户最大4GB”-如何?“另一个应该只运行2GB”-你怎么知道?请记住,JVM使用的内存不是堆内存。在某些情况下。。。很多,是的。虚拟服务器的内存量有限。如果您的Java应用程序向操作系统请求过多内存,操作系统将拒绝,您将得到此类异常。解决方案:1)运行更少的Java应用程序,2)使其更小,3)为具有更多内存的VPS支付更多的钱。请注意,这个特定的失败发生在线程创建上。JVM正在为线程堆栈请求内存。。。在Java堆之外。问题可能是你的应用程序有太多的线程。。。或者通常使用过多的堆外内存。或者你只是把堆弄得太大了,JVM已经为此保留了所有可用的RAM。最后,问题可能是交换空间,但在VPS上,你可能希望避免使用交换。。。因为性能会很差。这两个应用程序在单独运行时都不会出现问题,而且不会出现这样的错误。由于应用程序占用大量内存,我将MC服务器限制为用户最大4GB,而另一个应用程序应仅运行2GB,但如果其中一个应用程序运行,另一个应用程序无法启动。“我将MC服务器限制为用户最大4GB”-如何?“另一个应该只运行2GB”-你怎么知道?请记住,JVM使用的内存不是堆内存。在某些情况下。。。很多。
java -jar bot.jar
[0,063s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached.
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
        at java.base/java.lang.Thread.start0(Native Method)
        at java.base/java.lang.Thread.start(Thread.java:803)
        at java.base/jdk.internal.ref.CleanerImpl.start(CleanerImpl.java:118)
        at java.base/java.lang.ref.Cleaner.create(Cleaner.java:203)
        at java.base/jdk.internal.ref.CleanerFactory.<clinit>(CleanerFactory.java:42)
        at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)
        at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:844)
        at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:247)
        at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:177)
        at java.base/java.util.jar.JarFile.<init>(JarFile.java:346)
        at java.base/java.util.jar.JarFile.<init>(JarFile.java:317)
        at java.base/java.util.jar.JarFile.<init>(JarFile.java:256)
        at java.base/sun.launcher.LauncherHelper.getMainClassFromJar(LauncherHelper.java:521)
        at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:747)
        at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)