性能優化工具和參數
各種各樣的診斷和監視工具可以用來評估垃圾收集性能。本章簡要概述他們中的幾個。可以通過第九章中的「Tools andTroubleshooting」鏈接獲得更多的信息。
1. 命令行參數 –XX:+PrintGCDetails
獲取垃圾收集初始信息最簡單的方法之一是指定這個命令行參數–XX:+PrintGCDetails。對於每一次收集,形如這樣的信息都會在輸出的結果中:垃圾收集前後每個不同代活動對象的大小,每個代可用的空間以及垃圾收集消耗的時間。
2. 命令行參數–XX:+PrintGCTimeStamps
當使用了–XX:+PrintGCDetails參數後,除了上述輸出外,這個參數在每次垃圾收集開始時輸出一個時間戳。時間戳有助於幫助你將垃圾收集日誌與其他日誌時間關聯起來。
3.jmap
jmap是一個包含在Solaris?操作系統環境和Linux(但不支持Windows)的JDK中的工具(by zhangxsh:這篇文章說的JDK5時代,在JDK6的Windows版本中已經支持了)。這個工具列印關於一個運行著的JVM或core文件內存相關的統計信息。當沒有附加任何命令參數時,它列印載入的共享對象列表,很接近Solaris系統中pmap工具的輸出。對於更具體的信息,這些參數可以使用:-heap、-histo和–permstat。
-heap用於獲取如下信息:垃圾收集器的名稱、具體演算法的細節(例如並行垃圾收集的線程數)、堆的配置信息、堆的使用信息的摘要。
-histo用於獲取關於類的堆的直方圖。對於每個類,列印其在堆中實例的個數,這些對象消耗的內存總量的位元組數和類的全限定名。直方圖對於了解堆是如何使用的非常有用。
對於動態產生和載入大量類的應用(例如JSP、web容器)來說配置持久代的大小非常重要。如果應用載入了「太多」的類將發生OutOfMemoryError錯誤。jmap 的–permstat參數可以用來獲取持久代對象的統計信息。
4.jstat
jstat使用HotSpot JVM內建的方式提供運行中的應用的性能和資源消耗信息。但診斷性能問題時可以使用這個工具,特別是當問題與堆大小和垃圾收集相關時。它的許多選項能夠列印垃圾收集行為和性能的統計數據和各代的用量。
5. HPROF:堆分析器
HPROF是JDK5.0提供的一個簡單的分析器代理。它是一個使用JVM TI介面鏈接到JVM的動態鏈接庫。它使用ASCII和二進位格式輸出特徵信息到文件或socket。這些信息未來可以用前端工具分析。
HPROF能夠呈現CPU使用率、堆分配統計和鎖爭用特徵。另外,它可以輸出完整的heap dump並且報告JVM中所有線程和鎖的狀態。當分析性能、鎖爭用、內存泄露等問題時,HPROF非常有用。參見第九章HPROF文檔的鏈接。
6.HAT:堆分析工具(Heap Analysis Tool)
堆分析工具(HAT)幫助分析無意識的對象持有(unintentionalobject retention)。這個術語是用來描述一個對象不再需要,但由於存在某個活動對象到它的引用路徑仍然存活。HAT基於HPROF產生的堆快照提供了一個非常方便的方法瀏覽對象拓撲。這個工具支持很多查詢,包括「顯示所有從根集合到這個對象的引用路徑」。參見第九章HAT文檔的鏈接。
第八章有關垃圾收集的關鍵參數
一些命令行參數可以用來選擇垃圾收集器,指定堆或代的大小,修改垃圾收集行為,獲取垃圾收集統計數據。本章給出一些最常用的參數。有關各種各樣參數更多完整的列表和詳細信息可以參見第九章。注意:指定的數字可以以「m」或「M」結尾表示兆位元組,以「k」或「K」結尾表示千位元組,以「g」或「G」結尾表示千兆位元組。
垃圾收集器的選擇
垃圾收集器統計
堆和代的大小
並行和並行壓縮收集器的選項
CMS收集器的選項
第九章更多參考信息
HotSpot Garbage Collection and Performance Tuning
?garbage Collection in the Java HotSpotVirtual Machine
(http://www.devx.com/Java/Article/21977)
?Tuning Garbage Collection with the 5.0Java[tm] Virtual Machine
(http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html)
Ergonomics
?Server–Class MachineDetection
(http://java.sun.com/j2se/1.5.0/docs/guide/vm/server–class.html)
?Garbage Collector Ergonomics
(http://java.sun.com/j2se/1.5.0/docs/guide/vm/gc–ergonomics.html)
?Ergonomics in the 5.0 Java?VirtualMachine
(http://java.sun.com/docs/hotspot/gc5.0/ergo5.html)
Options
?Java?HotSpot VMOptions
(http://java.sun.com/docs/hotspot/VMOptions.html)
?Solaris and Linux options
(http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/java.html)
?Windows options
(http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html)
Tools and Troubleshooting
?Java?2 Platform,Standard Edition 5.0 Trouble–Shooting andDiagnostic Guide
(http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf)
?HPROF: A Heap/CPU Profiling Tool in J2SE 5.0
(http://java.sun.com/developer/technicalArticles/Programming/HPROF.html)
?Hat: Heap Analysis Tool
(https://hat.dev.java.net/)
Finalization
?Finalization, threads, and the Javatechnology–based memory model
(http://devresource.hp.com/drc/resources/jmemmodel/index.jsp)
?How to Handle Java Finalization"s Memory–RetentionIssues
(http://www.devx.com/Java/Article/30192)
Miscellaneous
?J2SE 5.0 Release Notes
(http://java.sun.com/j2se/1.5.0/relnotes.html)
?Java?Virtual Machines
(http://java.sun.com/j2se/1.5.0/docs/guide/vm/index.html)
?Sun Java?Real–Time System (Java RTS)
(http://java.sun.com/j2se/realtime/index.jsp)
?General book on garbage collection:Garbage Collection: Algorithms for Automatic Dynamic Memory ManagementbyRichard Jones and Rafael Lins, John Wiley & Sons, 1996.


TAG:技術萬花筒 |