VisualVM使用方法

VisualVM是一款集成在JDK中的免费可视化工具,用于分析和调优Java应用程序。本文详细介绍了如何使用VisualVM进行内存分析(包括堆和PermGen)、CPU性能分析和线程分析,包括死锁检测。通过实例展示了如何使用VisualVM进行内存dump、CPU抽样和线程状态监控,以帮助开发者定位性能瓶颈和内存泄漏问题。
摘要由CSDN通过智能技术生成

转自:http://www.cnblogs.com/wade-xu/p/4369094.html

这篇总结的很不错(本人亲自操手学习),留着以后复习备用,很适合入门级的学习者:

VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。

准备工作

自从 JDK 6 Update 7 以后已经作为 Oracle JDK 的一部分,位于 JDK 根目录的 bin 文件夹下,无需安装,直接运行即可。

 内存分析篇

VisualVM 通过检测 JVM 中加载的类和对象信息等帮助我们分析内存使用情况,我们可以通过 VisualVM 的监视标签对应用程序进行内存分析。

1)内存堆Heap

首先我们来看内存堆Heap使用情况,我本机eclipse的进程在visualVM显示如下:

随便写个小程序占用内存大的,运行一下

程序如下:

复制代码

 1 package jvisualVM;
 2 
 3 public class JavaHeapTest {
 4     public final static int OUTOFMEMORY = 200000000;
 5     
 6     private String oom;
 7 
 8     private int length;
 9     
10     StringBuffer tempOOM = new StringBuffer();
11 
12     public JavaHeapTest(int leng) {
13         this.length = leng;
14        
15         int i = 0;
16         while (i < leng) {
17             i++;
18             try {
19                 tempOOM.append("a");
20             } catch (OutOfMemoryError e) {
21                e.printStackTrace();
22                break;
23             }
24         }
25         this.oom = tempOOM.toString();
26 
27     }
28 
29     public String getOom() {
30         return oom;
31     }
32 
33     public int getLength() {
34         return length;
35     }
36 
37     public static void main(String[] args) {
38         JavaHeapTest javaHeapTest = new JavaHeapTest(OUTOFMEMORY);
39         System.out.println(javaHeapTest.getOom().length());
40     }
41 
42 }

复制代码

查看VisualVM Monitor tab, 堆内存变大了

在程序运行结束之前, 点击Heap Dump 按钮, 等待一会儿,得到dump结果,可以看到一些Summary信息

点击Classes, 发现char[]所占用的内存是最大的

双击它,得到如下Instances结果

Instances是按Size由大到小排列的

第一个就是最大的, 展开Field区域的 values

StringBuffer类型的 全局变量 tempOOM 占用内存特别大, 注意局部变量是无法通过 堆dump来得到分析结果的。

另外,对于“堆 dump”来说,在远程监控jvm的时候,VisualVM是没有这个功能的,只有本地监控的时候才有。

  ###转载注明出处:http://www.cnblogs.com/wade-xu/p/4369094.html

 

2)永久保留区域PermGen

其次来

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值