Java 服务器应用程序占用的 RAM 超出了分配的最大内存!

Java 服务器应用程序占用的 RAM 超出了分配的最大内存!

我正在主持一个java服务器应用程序在 Linux 根服务器上。

我的问题是,有时服务器占用的 RAM 多于分配的最大值,这会导致进程自动终止(崩溃)。

这是我的启动脚本:

nohup java -Xmx900m -Xms900m -XX:MaxPermSize=128m -jar -Xss1m jar-file.jar &

正如你所看到的,我还设置了最小和最大 RAM(-Xms900、-Xmx900m),所以应该不会有问题。

有谁知道我做错了什么?如果是,请告诉我并给我看一个“改进的启动脚本”。

最美好的祝愿,伊西德雷斯

答案1

事实上,Xms 和 Xmx 决定堆大小的限制,但还有其他内存区域:堆栈(Xss x 线程数)+ PermGen + CodeCahe(Java 7 中默认为 48MB)+ 直接内存。

一般来说,如果没有规格的话,会增加大约 1/2 GB。

相关内容