Centos下JAVA进程莫名从杀了

Centos下JAVA进程莫名自杀了
一个服务端程序运行在Centos上,服务器内存16G,如果启动时没有限制JVM内存时,过一两天后此JAVA进程会占用4G多内存,太吃内存了;今天限制了JVM内存,发现运行几小时后,此程序对应的JAVA进程竟然自杀了!!!而且没有任何错误输出!!请教各位,如何排查?

#!/bin/sh
JAVA_HOME=/usr/lib/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
ulimit -HSn 65536

#java -jar -Xms2048m -Xmx2048m /home/do.jar  >>/home/out.log    #这种写法进程在一段时间后会自杀
java -jar /home/do.jar  >>/home/out.log #这种写法进程不会自杀,但随着时间推移,内存占用越来越大!!


------解决思路----------------------
检查下程序内存泄漏问题,程序自动挂了应该是内存溢出了。
------解决思路----------------------
有可能被,linux系统本身kill掉了,查看一下,/var/log/messages还有/var/log/dmesg是否有kill相关信息
------解决思路----------------------
猜测:    
>>重定向标准输出到文件,相当于你的java程序打开了一个文件在内存里当做标准输出,因为你的log随着时间推移太大,而jvm又不会自动把文件写入到硬盘,于是程序占用内存越来越大.最后内存不够用自己因分配不了更多内存,直接异常终止了.
也许用管道能解决问题.
java -jar /home/do.jar  
------解决思路----------------------
 cat >> out.log 这样一段时间后cat可能也会越来越占内存,不清楚,在于cat会不会自动存硬盘.但do.jar应该不会终止才对.
因为你的log实在有点大,长时间运行后也许需要考虑设定log的最大值.写个脚本实现,或者linux有自己的工具实现之类的.
也许  java -jar /home/do.jar 
------解决思路----------------------
 split 会解决问题, 让split 收到一定数据后直接写到硬盘就好了.需要指定下 split的参数, 因为分太小文件会太多.

试试吧,linux应该有自己的log工具,也许通过管道连接log工具直接就解决了.