jvisualvm分析jvm内存溢出_eclipse

在上文的jvisualvm只能体现出内存溢出,那么怎么能分析出哪里出问题了呢。

1.举个栗子

首先我们使用这段代码使内存溢出。

jvisualvm分析jvm内存溢出_analyzer_02

2.dump堆日志

在发生内存溢出时(如果发生gc了 那么将得不到溢出时的日志 ),点击堆 dump,会生成.hprof文件,查看.hprof文件就可以分析出内存溢出情况。(在dump时 应用会暂停)

jvisualvm分析jvm内存溢出_eclipse_03

3.安装MAT

我们需要一个软件查看.hprof文件​

jvisualvm分析jvm内存溢出_analyzer_04

解压后,双击可以打开。

jvisualvm分析jvm内存溢出_eclipse_05

4.查看.hprof文件

打开上文的.hprof文件。

jvisualvm分析jvm内存溢出_内存溢出_06

jvisualvm分析jvm内存溢出_eclipse_07

会发现这里有一个program。

jvisualvm分析jvm内存溢出_jvm_08

点击 See stacktrace ,会发现报错日志,发现已经分析出有问题的地方了。

jvisualvm分析jvm内存溢出_jvm_09