java 测试内存溢出_浅析软件测试人员如何对JVM进行内存溢出检测

一、什么是JVM,检测JVM的意义

JVM是java virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是闪现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够"一次编译,到处运行"的原因。

JVM支持与操作系统无关,实现跨平台,使得Java成为应用最广泛的语言之一。当网站规模逐渐扩大时,为了保证性能,很有必要进行JVM内存溢出的检测。

二、检测工具jconsole

jconsole是jdk自带的用于监控内存溢出的工具,该工具可以对本地代码进行监控,也可以远程连接服务器对JVM进行程序监控。jconsole监控内容包括内存、cpu、线程、类等,

本次根据实际工作需要,重点阐述jconsole远程连接服务器的步骤及注意项:

在jak的bin目录下打开Jconsole

76c10546a69dff7397a32ad96d1e2d22.png

填写远程服务器的IP地址和端口号,填写用户名、密码

154f7f12efa50d632fdbbd9548c5e2b6.png

经过一段时间等待成功连上服务器,概况页直观展示内存、线程、类、cpu曲线图

b39ca3c7e03a6ee59146988cbf87716d.png

内存使用情况详细图示

929a7d0357beb7fd19e82a078c870a9e.png

线程使用情况详细图示

e7293ba12e54d72c9af6db9017494c91.png

类使用情况详细图示

51032fdd45ef235f48897e1fc83b6ffd.png

2991eb097a0ccfd9d61f34c32f5203ff.png

此外,还有"VM概要":显示包括连接名称、活动线程、堆大小、操作系统、物理内存等详细信息;"MBean":可对左侧目录的相关属性进行配置。

注:想对JConsole有更详尽的了解请参考该博客:https://blog.csdn.net/lifuxiangcaohui/article/details/36896199

三、jmap的应用

通过jconsole持续监控,如在某一时间点发现性能问题时,可通过jmap命令查看内存使用情况,输出重定向将文件导出来进行分析。输出重定向命令:JMap -dump:format=b;file='文件名(自定义)'  pid (程序的进程pid)

四、MAT工具分析

通过jmap命令将程序的内存使用情况文件导出来后,我们可以通过MAT对文件进行分析。

解压mat

39c53d0ca119b8c78d8a5cda14c0bf36.png

点击mat文件夹中的MemoryAnalyzer启动

e3ecf218ae81d958e3ced3877ac4af5f.png

选择文件,点击打开

38c50cdf57bc316ad6b56207c25ed8eb.png

404f8c60d7786cf36daa781575f01c99.png

8a7e5babd95b010434855b59a9f96f34.png

因涉及到实际工作中java类名称等信息了,下面就不截图了。在页面中如果栈、堆的调用次数差别很大,需点击对象详情,分析对象调用情况。如果一个对象出现多次,说明是不正常的对象引用,GC不能回收,需要反馈给开发重点关注并优化。

注:该博客地址详细介绍了利用MAT进行内存泄漏分析https://blog.csdn.net/yxz329130952/article/details/50288145

至此,内存溢出检测告一段落,可以将文件和mat交于开发进行性能调优。另外,mat在加载文件时,在文件目录生成了xx_Leak_Suspects压缩包,解压压缩包可以通过浏览器打开直观查看分析报告。

五、总结

以上,就是JVM内存溢出检测的大体流程。等开发进行了性能调优,可以重复以上步骤,验证JVM性能。操作步骤如有不足,还请大家多多指教,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值