背景:
个别机器:内存突然上升,cpu利用率升高。
解决过程
1. jmap dump整个内存镜像
2. 整个文件700多M,使用Jhat打不开
3. 换heapanalyzer,能打开,但没有分析出占用内存的情况,使用命令:java -Xmx4096m -jar ha39.jar
4.换成Mat eclipse插件,直接打开dump.bin文件(jvm 10g)。mat插件地址:http://download.eclipse.org/mat/1.6/update-site/
跟据mat分析今天上的dump文件,发现大对象是一个String的arraylist,string的内容像是日期,然后搜索整个工程,找出具体方法有一个while语句,在边界测试时会进入死循环,导致内存不断升高,最终heap out of memory。