我正在主持一个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。