不少tomcat進程退出(或者進程假死),都是因爲頻繁的拋出OutOfMemeoryError致使的。java
爲了讓tomcat退出前或者發生OutOfMemeoryError時自動dump堆棧信息,方便過後排查問題,咱們能夠作以下操做:tomcat
一、 在tomcat啓動參數中加入兩個參數 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/home/tomcat/domains/server2/oom.hprofdom
二、 重啓tomcatserver
參數說明進程
(1)-XX:+HeapDumpOnOutOfMemoryError 表示當JVM發生OOM時,自動生成DUMP文件。配置
(2)-XX:HeapDumpPath=存儲文件/目錄 表示生成DUMP文件的路徑腳本
//*********************************** 完美分割線 *********************************************//di
-XX:+HeapDumpOnOutOfMemoryError文件
該配置會把快照保存在user.dir中,好比你用tomcat啓動,那應該是在tomcat的bin目錄下生成
固然,也能夠經過XX:HeapDumpPath=./java_pid.hprof來顯示指定路徑
此外,OnOutOfMemoryError參數容許用戶指定當出現oom時,指定某個腳原本完成一些動做,好比郵件知會。。。
$ java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:OnOutOfMemoryError ="sh ~/cleanup.sh" MyApp