当前位置:网站首页 > 编程语言 > 正文

jvisualvm分析线程(jvisualvm分析dump)



一、JVisualVM能做什么

VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。

     在JDK_HOME/bin(默认是C:Program FilesJavajdk1.6.0_13bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。

具体的介绍参看:

http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

二、准备模拟内存泄漏demo

1、定义静态变量HashMap

2、分段循环创建对象,并加入HashMap

代码如下:

3、配置jvm参数如下:

4、运行程序并打卡visualvm监控

java visualvm如何分析 dump jvisualvm分析内存_System

三、使用jVisualvm分析内存泄漏

1、查看Visual GC标签,内容如下,这是输出first的截图

java visualvm如何分析 dump jvisualvm分析内存_System_02

这是输出forth的截图:

java visualvm如何分析 dump jvisualvm分析内存_System_03

老生代一直在gc,当程序继续运行可以发现老生代gc还在继续:增加到了10次,但是老生代的内存并没有减少。说明存在无法被回收的对象,可能是内存泄漏了。

java visualvm如何分析 dump jvisualvm分析内存_内存泄漏_04

如何分析是那个对象泄漏了呢?打开抽样器标签:点击后如下图:

java visualvm如何分析 dump jvisualvm分析内存_java_05

按照程序输出进行堆dump,当输出first时,dump一次,当输出forth时dump一次。

java visualvm如何分析 dump jvisualvm分析内存_内存泄漏_06

进入最后dump出来的堆标签,点击类:点击右上角:“与另一个堆存储对比”。如图选择第一次导出的dump内容比较:

java visualvm如何分析 dump jvisualvm分析内存_内存泄漏_07

比较的结果如下:(10:39:23和10:38:48)比较(上图的比较顺序反了,结果是类实例减少),发现TestMemory类的实例数,一直在增加,却没有被垃圾回收。

可以看出在两次间隔时间内TestMemory对象实例一直在增加并且多了,说明该对象引用的方法可能存在内存泄漏。

java visualvm如何分析 dump jvisualvm分析内存_System_08

如何查看,依赖关系。【点击类名,鼠标右键,选择在实例视图中显示】得到如下界面:

java visualvm如何分析 dump jvisualvm分析内存_System_09

左侧是创建的实例总数,右侧上部为该实例的结构,下面为引用说明,从图中可以看出在类JvmMemoryTest里面被引用了,并且被HashMap引用。

如此可以确定泄漏的位置,进而根据实际情况进行分析解决

五、扩展知识

线程死锁侦测

jvm优化建议

   本质上是减少GC的次数。

如果是频繁创建对象的应用,可以适当增加新生代大小。常量较多可以增加持久代大小。对于单例较多的对象可以增加老生代大小。比如spring应用中。

GC选择,在JDK5.0以后,JVM会根据当前系统配置进行判断。一般执行-Server命令便可以。gc包括三种策略:串行,并行,并发。

吞吐量大大应用,一般采用并行收集,开启多个线程,加快gc的是否。

响应速度高的应用,一般采用并发收集,比如应用服务器。

年老代建议配置为并发收集器,由于并发收集器不会压缩和整理磁盘碎片,因此建议配置:

直接运行linux上的jvisualvm

下载X-Manager,可以将试图展现在本地机器上。

不受此jvm支持

保证jvisualvm所属jdk版本和linux上一致。

到此这篇jvisualvm分析线程(jvisualvm分析dump)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • pointnet论文原文(论文key points怎么写)2025-03-18 16:54:05
  • 虚拟盘是什么意思(什么是虚拟盘 它有哪些优缺点)2025-03-18 16:54:05
  • st7735s引脚图(stk0760引脚)2025-03-18 16:54:05
  • 圈一圈拼音怎么读(圈一圈的圈怎么写?)2025-03-18 16:54:05
  • 拆包装发货是什么意思(什么叫拆包发货)2025-03-18 16:54:05
  • 卡巴斯基更新源(卡巴斯基最新版本)2025-03-18 16:54:05
  • 女神异闻录5战斗系统任务(女神异闻录5 战斗系统)2025-03-18 16:54:05
  • 如何在win11上安装win7虚拟机(虚拟机安装 win11)2025-03-18 16:54:05
  • mt734报文解析(mt742报文解读)2025-03-18 16:54:05
  • 单播地址怎么判断真假(单播地址怎么判断真假视频)2025-03-18 16:54:05
  • 全屏图片