所以每隔几天我在 Ubuntu 上的 java 进程就会被自动杀死,我不知道为什么。
我的盒子有 35.84 GB 的 RAM,当我启动我的 Java 进程时,我将 -Xmx28g 参数传递给它,所以它应该使用小于可用的最大 RAM 的方式。
我运行 jstat 如下:
# jstat -gccause -t `pgrep java` 60000
在进程被杀死之前 jstat 的最后几行输出是:
Time S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC
14236.1 99.98 0.00 69.80 99.40 49.88 1011 232.305 11 171.041 403.347 unknown GCCause No GC
14296.2 93.02 0.00 65.79 99.43 49.88 1015 233.000 11 171.041 404.041 unknown GCCause No GC
14356.1 79.20 0.00 80.50 99.55 49.88 1019 233.945 11 171.041 404.986 unknown GCCause No GC
14416.2 0.00 99.98 24.32 99.64 49.88 1024 234.945 11 171.041 405.987 unknown GCCause No GC
这似乎是这次 /var/log/syslog 中发生的事情:https ://gist.github.com/1369135
除了我的 java 应用程序之外,这台服务器上实际上没有运行任何东西。这是怎么回事?
编辑:我正在运行 java 版本 1.6.0_20,我在启动时传递给 java 的唯一值得注意的参数是“-server -Xmx28g”。我没有使用应用程序服务器,但我的应用程序嵌入了“简单 Web 框架”。