1

经过一段时间的工作,我的 java 编写的应用程序被“杀死”了。

Java 应用程序是从 Linux 下的 SH 脚本启动的,该脚本运行了一段时间。之后显示PID并说“杀死”字样。

像这样:

runMyServer.sh: line 3: 3593 Killed         java -Xmx2024m -cp ...

系统日志中有关于内存不足事件的信息。所以它看起来像内存不足错误。

我的问题是:什么时候不能生成 OutOfMemroyError 异常?

4

2 回答 2

2

您的系统上的内存可能太少,或者运行的进程会耗尽所有内存和交换。当 GNU/Linux 内存不足时,它会杀死占用大量内存的进程。这基本上只是杀死进程,所以不是你的Java进程内存不足,而是操作系统。

于 2012-06-25T20:09:42.433 回答
0

为了避免您的 java 应用程序被 OOM 杀手杀死,只需向您的系统添加足够的交换并禁用内存过度使用。

dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile               swap                    swap    defaults        0 0" >> /etc/fstab
echo 2 > /proc/sys/vm/overcommit_memory
于 2012-06-25T21:15:22.283 回答