内存溢出记录
OutOfMemoryError内存溢出
启动参数增加 -XX:+HeapDumpOnOutOfMemoryError (如果是服务器生产环境一般会有运维提供快照给予分析)
当发生内存溢出时;
找到jdk目录下jvisualvm 打开,将生成的hprof快照导入,查看信息
可以看到内存中对象多的情况
找到可能发生内存溢出的代码,再具体分析;如果是服务器上的OOM大致思路差不多,定位到占用比较多的对象,然后进行分析。
额外补充:
将上述占用资源较多的对象,与概要中的描述信息进行查看,然后逐步分析可以具体到类A的方法A,其次可以继续查看该对象里面的具体信息,也是找到占用资源最对的对象,通过该对象,与类A方法A中的关联,可以准确定位到内存溢出的大概位置,再结合代码具体细看。
ps:概要中的信息与占用比较多资源的对象,可以很清晰的看出是那一层的代码块引发原因。