摘要:垃圾回收監控和分析工具是在安裝時免費提供的。監控現在可以監控垃圾回收過程了。至少我們可以知道程序中存在和對象內存分配和垃圾回收相關的問題。到此為止,關于垃圾回收的系列文章已經完結了。
本文非原創,翻譯自Java Garbage Collection Monitoring and Analysis
在Java中為對象分配和釋放內存空間都是由垃圾回收線程自動執行完成的。和C語言不一樣的是Java程序員不需要手動寫垃圾回收相關的代碼。這是使得Java如此流行,同時也是Java能幫助程序員寫出更好的Java應用的優點之一。
在這篇Java垃圾回收系列文章中,讓我們看下一些監控和分析垃圾回收的工具。然后用工具嘗試監控和分析一個例子。
Java垃圾回收監控和分析工具Java VisualVM
Naarad
GCViewer
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
HPjmeter
IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory
Visualizer
Verbose GC Analyzer
Java VisualVMJava VisualVM是在Java SE SDK安裝時免費提供的。看下你的Java JDK安裝目錄下的/bin目錄,Javajdk1.8.0bin。此目錄下有許多其他工具包括javac和java工具,jvisualvm就是其中一個。
Java VisualVM對運行中的Java應用提供了可視化的信息展示。它是很多工具的整合包,像工具JConsole,jstat,jinfo,jstack以及jmap現在都是Java VisualVM的一部分。
Java VisualVM可以用來 - 生成和分析堆內存的dump - 觀察和操作MBeans - 監控垃圾回收 - 內存和CPU性能分析
Launch VisualVMjvisualvm已經包含在了JDK的bin目錄下,如果以設置環境變量path,則可以直接在命令行中運行jvisualvm,將出現如下啟動界面
安裝Visual GC插件我們需要安裝visual GC 插件才能有個堆Java GC線程的漂亮和有價值的視覺感受。在上面的啟動界面中點擊工具->插件->可用插件->Visual GC
(不知道什么原因,這張圖片就是上傳不成功,只有附上外鏈地址將就看了,抱歉)
安裝。
監控GC現在可以監控垃圾回收過程了。開啟你的Java應用程序,Java VisualVM會自動檢測并將其顯示到界面上。在左邊“應用程序”面板的“本地”節點下面,所有本地運行的Java應用都會被列舉出來。
Java VisualVM自己本身也是一個Java應用程序,因此它自身也被列了出來。作為本文的目的我們將監控VisualVM應用本身的GC過程。
雙擊“本地”節點下的VisualVM圖標。
這樣應用程序的監控面板會在右邊打開。面板上有多個標簽,每個里面展示了與應用程序性能相關的方面。由于我們現在主要關注“Visual GC”,so,點之。
上面的圖片顯示了Old,Eden,S0,S1使用的內存空間。下面的圖表顯示了各個部分申請和釋放內存的詳細信息。它以設定的刷新頻率不停地跟新。
上圖顯示的是一個正常運行的程序。當發生內存泄露或者不正常的操作時,可以從圖形本身明顯地看出來。至少我們可以知道程序中存在和對象內存分配和垃圾回收相關的問題。然后利用其他標簽如“Threads”中提供的信息和Thread Dump我們可以縮小發生問題的范圍。
在“監視”標簽中,我們可以看到以時間線發展的內存使用概況圖。這里有個“執行垃圾回收”按鈕可以調用垃圾回收過程。
在“抽樣器”標簽中我們可以開始內存和CPU分析工作。抽樣器會實時顯示各個實例的使用情況。它可以幫助確定性能問題到底發生在哪里。
到此為止,關于Java 垃圾回收的系列文章已經完結了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65040.html
摘要:在架構中,堆內存和垃圾回收器這兩個部分和垃圾回收相關。堆內存在的內存模型中,最重要的是要了解堆內存的概念。在垃圾回收的過程中,這些對象將被從堆內存中清除,同時它們的空間也就被回收了。 本文非原創,翻譯自Java Garbage Collection introduction在Java中為對象分配和釋放內存空間都是由垃圾回收線程自動執行完成的。和C語言不一樣的是Java程序員不需要手動寫...
摘要:當一個實例被創建的時候,它最初被存放在堆內存空間的年輕代的區中。老年代或者永久代是堆內存的第二個邏輯部分。在垃圾回收過程中掃描屬于部分的堆內存。一旦實例從堆內存中刪除了,它們原來的位置將空出來給以后分配實例使用。 本文非原創,翻譯自How Java Garbage Collection Works?在Java中為對象分配和釋放內存空間都是由垃圾回收線程自動執行完成的。和C語言不一樣的是...
摘要:并發標記清除垃圾回收器,使用多個線程來掃描堆內存并標記可被清除的對象,然后清除標記的對象。垃圾回收器應用于大的堆內存空間。它將堆內存空間劃分為不同的區域,對各個區域并行地做回收工作。它會通過把重復的值移動到同一個數組來優化堆內存占用。 本文非原創,翻譯自Types of Java Garbage Collectors在Java中為對象分配和釋放內存空間都是由垃圾回收線程自動執行完成的。...
摘要:最黑科技的玩法就是字節碼編程,也就是動態修改或是動態生成字節碼。使用字節碼編程可以玩出很多高級玩法,其中最高級的玩法是在程序運行時進行字節碼修改和代碼注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);這個是我訂閱 陳皓老師在極客上的專欄《左耳聽風》,我貼出來是為了自己以后方便學習和記憶,同時也分享給你們一起學習...
摘要:執行引擎作用執行字節碼,或者執行本地方法運行時數據區其實就是指在運行期間,其對內存空間的劃分和分配。 雖是讀書筆記,但是如轉載請注明出處https://uestc-dpz.github.io..拒絕伸手復制黨 JVM Java 虛擬機 Java 虛擬機(Java virtual machine,JVM)是運行 Java 程序必不可少的機制。JVM實現了Java語言最重要的特征:即平臺...
閱讀 1972·2021-11-25 09:43
閱讀 653·2021-10-11 10:58
閱讀 1730·2019-08-30 15:55
閱讀 1725·2019-08-30 13:13
閱讀 736·2019-08-29 17:01
閱讀 1840·2019-08-29 15:30
閱讀 789·2019-08-29 13:49
閱讀 2172·2019-08-29 12:13