一、什么是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

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

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

内存使用情况详细图示

线程使用情况详细图示

类使用情况详细图示

此外,还有"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

点击mat文件夹中的MemoryAnalyzer启动

选择文件,点击打开

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

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

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

五、总结

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

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

  1. 软件测试app内存溢出,浅析软件测试人员如何对JVM进行内存溢出检测

    一.什么是JVM,检测JVM的意义 JVM是java virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各 ...

  2. java获取内存基址_安卓逆向|菜鸟的FRIDA学习笔记:内存读写

    假设你的手机已经root,并已开启frida服务,电脑端已安装好Python,frida,IDA,GDA. 样本地址: 链接: https://pan.baidu.com/s/1y3kIXcBv25Q ...

  3. 《深入理解Java虚拟机》(第二版)学习1:JVM的内存划分

    运行时数据区 先来一张图描述一下 JVM 的内存划分 PS:自己画的,丑是难免丑了点- 程序计数器(Program Counter Register) 程序计数器(Program Counter Re ...

  4. k8s中java内存泄漏,Kubernetes 案例分享:如何避免 JVM 应用内存耗尽

    原标题:Kubernetes 案例分享:如何避免 JVM 应用内存耗尽 编译:ImportNew/唐尤华srvaroa.github.io/jvm/kubernetes/memory/docker/o ...

  5. mysql 数据库大小与内存关系_【MYSQL】CPU资源和可用内存大小对数据库性能的影响...

    前言 可能影响到数据库性能的几个点,其一就是服务器硬件,也是本节要说的CPU与可用内存. 引入 当热数据超过可用内存大小,MemCache存储引擎缓存层容易失效(当缓存大量失效时,容易产生大量的网络传 ...

  6. java 缓冲区溢出_浅析缓冲区溢出

    最近一直在学习缓冲区溢出漏洞的攻击,但是关于这一块的内容还是需要很多相关知识的基础,例如编程语言及反汇编工具使用.所以研究透彻还需要不少的时间,这里简单的做一个学习的总结,通过具体的实验案例对缓冲区溢 ...

  7. java缓存内存泄漏_记一次mybaits缓存导致的内存溢出 java.lang.OutOfMemoryError: Java heap space...

    先贴一下错误截图 org.springframework.web.util.NestedServletException: Handler dispatch failed; nested except ...

  8. java测试性能代码_关于性能:Java代码内部的基准测试

    我最近一直在研究基准测试,我一直对记录程序数据等感兴趣.我想知道我们是否可以在程序中有效地实现自己的内存使用代码和实现自己的时间消耗代码.我知道如何检查代码运行所需的时间: public static ...

  9. java测试覆盖率工具_【腾讯TMQ】JAVA代码覆盖率工具JaCoCo-原理篇(下)

    三.JaCoCo使用方式 使用方式有很多,这里贴出了相应的参考链接,根据项目的不同可以灵活供有需要的读者去学习. 3.1 Apache Ant方式 参见 http://eclemma.org/jaco ...

最新文章

  1. IDEA 常用设置
  2. UIUC翟成祥教授:用文本透镜拓展人类智能
  3. 关于应用程序启动,你可能不知道的东西
  4. 通过ribbon 根据服务名获取所有服务实例的IP和端口列表
  5. python注释可以辅助程序调试吗_Python 注释
  6. 二叉搜索树的查询操作《算法导论》12.2
  7. [Qt教程] 第19篇 2D绘图(九)图形视图框架(上)
  8. abaqus实例详解_Abaqus接触分类、形成和定义
  9. svg 线条动画浅尝
  10. java正则表达式判断_Java正则表达式判断
  11. 华北计算机研究所分房,请教公安部第一研究所这样分房合理吗??
  12. 查询商品列表报错This application has no explicit mapping for /error, so you are seeing this as a fallback
  13. aspdotnet部分资源
  14. 在Android软件开发教学过程中应当注意的事项总结
  15. 上传文件(ajax结合form表单)
  16. [小技巧]为Atlas AutoComplete加上滚动条
  17. 创建Django项目及配置
  18. 计算机操作系统有几种基本管理,操作系统有哪些管理功能
  19. 鸿蒙系统主题如何自定义,自定义流式布局
  20. 牛客练习赛68 A.牛牛的mex

热门文章

  1. 利用shell脚本定时执行程序
  2. 基于MATLAB的柑橘等级分类系统
  3. JAVA计算机毕业设计园林公司OA系统Mybatis+系统+数据库+调试部署
  4. 美通企业日报 | 中国新车质量问题数明显减少;阿迪达斯大中华区二季度销售额大增...
  5. 全拼输入法在计算机内部,全拼输入法,怎么安装在电脑里?
  6. php 表单页面跳转,form表单页面跳转方式提交练习
  7. SQL数据库教程-学习笔记2
  8. gdsdxy.cn index.php,【北京教师网加盟联盟】实时更新,已有9所院校自主招生成绩可查...
  9. Java实现阿里云、QQ、网易邮箱JavaMail邮箱验证码 -《一抹茶-csdn》
  10. Excel自动化程序发生“Micosoft Excel已停止工作”的问题解决