公司一数据同步的weblogic服务发布在AIX上,最近频繁内存溢出(OutOfMemoryError),在/bea/user_projects/domains/server/下面生成了javacore....txt和headdump....phd文件,其中后者非常大,如果weblogic内存设置为2G,往往这个文件就是1G多。
如何分析:
1. 内存溢出,无非是在做大数据量的操作,分析javacore....txt,查看All Thread Details下面的进程,分析出哪些是大数据量的操作,不过这个要求你要懂代码,懂业务才行。
2. 下载一个IBM HeapAnalyzer工具,分析headdump....phd文件。在cmd命令窗口运行java -jar -Xms830m -Xmx830m ha440.jar,在本机上,我的内存只能设置到830M,往往分析到一半时工具就报内存溢出。于是找了一台服务器,设置为2G的java -jar -Xms2048m -Xmx2048m ha440.jar。
分析完成后,着重看subpoena leak suspect(s) suspects by category里面的内容,可以看到占用内存最多的进程情况,还是得懂代码和业务。