zoukankan      html  css  js  c++  java
  • java visual VM使用简介

    转载请注明出处

    http://blog.csdn.net/pony_maggie/article/details/44999175


    作者:小马

    VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。它最主要的功能是监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析等。



    通过实际的例子来说明。第一步我们要安装viual VM, 比较好的是在jdk6之后的安装目录下自带了这个工具,不用再独立安装。




    打开之后如下图:




    当我们通过eclipse运行程序时,visual VM会自动识别到正在运行的程序,比如下面一段代码头:

    1. public class StringPoolTest   
    2. {  
    3.   
    4.     public void testStringPoolWithLongString()  
    5.     {  
    6.         long i = 0;  
    7.         while(true)  
    8.         {  
    9.             String longString = "this is a very very long string,to test the gc behavior of the string constant pool" + i;  
    10.             longString.intern();  
    11.             i++;  
    12.         }  
    13.     }  
    14.       
    15.     /** 
    16.      * @param args 
    17.      */  
    18.     public static void main(String[] args)   
    19.     {  
    20.         StringPoolTest test = new StringPoolTest();  
    21.         test.testStringPoolWithLongString();  
    22.   
    23.     }  
    24.   
    25. }  


    在eclipse下运行这段程序,然后到visual VM中打开监视视图,看到如下的显示情况:




    CPU部分不显示,应该是因为我运行的jdk版本太低。内存部分我们看到堆和perm的使用情况,注意看上面的程序,testStringPoolWithLongString函数是个死循环,不断的调用String的intern,intern返回字符串对象的规范化表示形式,当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串,则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。java7以前,字符串常量池是放在perm空间的, 从java7开始,放在heap空间。我用的版本是1.6,所以如果我们切换到perm视图看到的会是另一种景象,




    从图上可以看出,不断的GC,又不断的申请空间。


    线程部分显示的是当前用户线程和守护线程的数量,




  • 相关阅读:
    HashMap按键排序和按值排序
    LeetCode 91. Decode Ways
    LeetCode 459. Repeated Substring Pattern
    JVM
    LeetCode 385. Mini Parse
    LeetCode 319. Bulb Switcher
    LeetCode 343. Integer Break
    LeetCode 397. Integer Replacement
    LeetCode 3. Longest Substring Without Repeating Characters
    linux-网络数据包抓取-tcpdump
  • 原文地址:https://www.cnblogs.com/lcword/p/8078655.html
Copyright © 2011-2022 走看看