轉載請註明出處java
http://blog.csdn.net/pony_maggie/article/details/44999175
eclipse
做者:小馬jvm
VisualVM 是一款免費的性能分析工具。它經過 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多種方式從程序運行時得到實時數據,從而進行動態的性能分析。它最主要的功能是監控內存泄露,跟蹤垃圾回收,執行時內存、cpu分析,線程分析等。函數
經過實際的例子來講明。第一步咱們要安裝viual VM, 比較好的是在jdk6以後的安裝目錄下自帶了這個工具,不用再獨立安裝。
打開以後以下圖:
當咱們經過eclipse運行程序時,visual VM會自動識別到正在運行的程序,好比下面一段代碼頭:
工具
在eclipse下運行這段程序,而後到visual VM中打開監視視圖,看到以下的顯示狀況:
CPU部分不顯示,應該是由於我運行的jdk版本過低。內存部分咱們看到堆和perm的使用狀況,注意看上面的程序,testStringPoolWithLongString函數是個死循環,不斷的調用String的intern,intern返回字符串對象的規範化表示形式,當調用 intern 方法時,若是池已經包含一個等於此 String 對象的字符串,則返回池中的字符串。不然,將此 String 對象添加到池中,而且返回此 String 對象的引用。java7之前,字符串常量池是放在perm空間的, 從java7開始,放在heap空間。我用的版本是1.6,因此若是咱們切換到perm視圖看到的會是另外一種景象,
從圖上能夠看出,不斷的GC,又不斷的申請空間。
線程部分顯示的是當前用戶線程和守護線程的數量,
性能