首页 > 编程知识 正文

java内存分析工具nat,java堆内存分析工具

时间:2023-05-05 23:32:44 阅读:186524 作者:600

一.在分析背景服务器上运行java项目服务时,根据服务实现的功能不同,每个项目的消费服务器系统内存也有差异。 如果项目中的某个功能模块操作不当导致占用的资源无法立即释放,则会导致内存泄漏,导致服务无法运行。 要排除此问题,除了手动检查代码外,还可以使用外部工具锁定问题代码的位置。

2 .用于解决问题的命令使用jmap ——JDK附带的内存使用检测工具

例如,以下命令输出指定的java服务占用内存的前20个类。

jmap -histo服务进程号| head -20

但是,无法具体分析具体的代码内容。 要进行具体分析,必须获取服务器上指定项目的堆转储文件。 这里使用内存分析工具(mat )来使用分析工具进行分析。

使用jamp命令:

jmap -dump:format=b,file=dump.hprof (文件名)服务进程号在当前目录中生成堆转储文件并将其下载到本地。

工具下载链接

它还可以在eclipse中用作插件,但必须单独作为软件使用才能导入存储文件。 因为要在自己的电脑上打开从服务器下载的堆转储文件。 所以选择windos版本的下载。 下载后,如图所示直接解压缩:

双击MemoryAnalyzer可打开该工具。 如有必要,请修改配置文件MemoryAnalyzer.ini,并修改参数,如-Xmx5120m。 比堆转储文件大更好)。

使用分析工具打开转储文件。 建议将文件放在其他文件夹中,然后打开。 因为分析文件的过程会在打开的目录下生成其他文件。 将在堆转储文件的同级目录下生成压缩文件filename_Leak_Suspects.zip。 这里有html的静态页面,也可以在浏览器中进行分析。

如果选择“‘Leak Suspects”,则会显示MAT自身认为有问题的内容。

分析结果:

如果显示的内存泄漏中可能有与你写的代码相对应的类,可以进行定位,并逐一找出问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。