为什么没有生成OutOfMemoryError?

时间:2012-06-25 20:01:45

标签: java linux shell out-of-memory

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

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

像这样:

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

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

我的问题是:当OutOfMemroyError异常无法生成时?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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