前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内存映像文件导出

内存映像文件导出

作者头像
无涯WuYa
发布2022-12-03 12:16:08
1.1K0
发布2022-12-03 12:16:08
举报

在测试IO密集型应用程序的时候,当出现内存泄露的时候,往往需要针对这部分进行分析内存泄露的具体原因。常规的一种方式是我们使用JVM的监控工具来监控这部分,来查看堆内存以及非堆内存的实际使用率和过程中应用程序本身的CPU使用率。但是被测试的服务一旦出现内存泄露,该服务就会疯狂的打印内存泄露的日志信息同时客户端请求服务,服务一直处于超时的情况。那么这个时候如JVisualVM的监控也会失去连接,并不能够看到很关键的信息。所以下面详细的阐述下当被测试的服务一旦出现内存泄露的时候,使用自动导出以及命令行导出的方式来获取到内存映像的文件,从而对分析内存泄露提供有利的信息。

内存泄露要么是堆内存泄露要么是非堆内存泄露,很多时候是堆内存泄露导致。这部分主要阐述下当内存泄露的时候,自动导出内存的映像文件,要实现内存泄露自动导出内存映像文件,需要配置的信息具体为:

代码语言:javascript
复制
-XX:+HeapDumpOnOutOfMemoryError
#导出的内存映像文件的路径,这是当前路径
-XX:HeapDumpPath=./

在IDEA中,点击菜单栏Run中的Edit Configurations,具体如下所示。

点击配置后,在VM options中填写如上的配置信息,具体如下所示。

配置成功后启动服务,进行高并发的访问服务,就会出现内存泄露以及同时会自动的显示出导出的内存映像文件,具体输出的信息如下所示。

代码语言:javascript
复制
java.lang.OutOfMemoryError: Java heap space
Dumping heap to ./java_pid44945.hprof ...
Heap dump file created [47080914 bytes in 0.291 secs]

如上显示内存映像文件已导出,在当前目录下也会看到这部分,具体如下所示。

另外一种方式是使用jamp命令方式的模式来导出内存映像的文件,使用jamp导出内存映像文件的命令如下所示。

代码语言:javascript
复制
jps -l
#查询到PID信息
45164 com.example.dbplus.DbPlusApplication
#使用jamp导出内存映像文件
jmap -dump:format=b,file=/root/heap.hprof  45164
Dumping heap to /root/heap.hprof ...
Heap dump file created

如上所示,通过jamp命令的模式来导出内存映像文件,后续文章详细地阐述下针对内存映像文件的打开方式以及针对它的分析。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档