本Blog所有內(nèi)容不得隨意轉(zhuǎn)載,版權(quán)屬于作者所有。如需轉(zhuǎn)載請與作者聯(lián)系(
fastzch@163.com
)。
未經(jīng)許可的轉(zhuǎn)載,本人保留一切法律權(quán)益。
一直以來,發(fā)現(xiàn)有某些人完全不尊重我的勞動成果,隨意轉(zhuǎn)載,提醒一下那些人小心哪天惹上官司。
一、關(guān)于各工具的使用,我簡單的整理總結(jié)了一下,列表如下:
ga(IBM Pattern Modeling and Analysis Tool for Java Garbage Collector)??
?分析WAS產(chǎn)生的GC Log的工具
?
jca(IBM Thread and Monitor Dump Analyzer for Java)
?分析WAS OOM時產(chǎn)生的(文件名以javacore開頭,后綴名為.txt
??例:javacore.20080731.200248.2324.txt)
ha(IBM HeapAnalyzer)
?分析WAS產(chǎn)生的Java Heap Dump的文件(文件后綴名為.phd)
二、關(guān)于在Windows上生成WebSphere的java heap dump 和 java core dump的操作,可以參考我的另一篇文章:
《[轉(zhuǎn)載]如何在Windows 平臺獲得WASv5.x/6.x的 Java HeapDump和JavaCore 診斷文件? 》
三、相關(guān)參考資料:
以下內(nèi)容來自于WebSphere 的Info Center:?
以手動方式生成堆轉(zhuǎn)儲
使用此任務(wù)來手動生成堆轉(zhuǎn)儲。如果使用的 Sun Java 虛擬機(JVM)包含在 HP-UX 和 Solaris 操作系統(tǒng)上運行的 WebSphere Application Server,那么不支持此功能。
在您開始之前
雖然只有在檢測到內(nèi)存泄漏時才會生成堆轉(zhuǎn)儲,但是,您必須知道,生成堆轉(zhuǎn)儲時會嚴(yán)重影響 WebSphere Application Server 的性能,并且時間長達數(shù)分鐘。因此,在以手動方式生成多個堆轉(zhuǎn)儲以便進行內(nèi)存泄漏分析時,請確保泄漏的對象達到相當(dāng)數(shù)目后才創(chuàng)建另一個堆轉(zhuǎn)儲。這樣,問題確定工具就能夠確定內(nèi)存泄漏的根源。
關(guān)于本任務(wù)
您可能想以手動方式生成堆轉(zhuǎn)儲,以便對內(nèi)存泄漏進行分析。在 WebSphere Application Server 中的 Java 虛擬機(JVM)上,無法自動生成堆轉(zhuǎn)儲。由于生成堆轉(zhuǎn)儲的成本相當(dāng)高,因此,您可能想指定堆轉(zhuǎn)儲的生成時間。在 WebSphere Application Server 中的 JVM 上,可以通過對 WebSphere Application Server 受管 Bean(MBean,這些是特殊的 Java bean)執(zhí)行 generateHeapDump 操作來以手動方式生成堆轉(zhuǎn)儲。WebSphere Application Server wsadmin 工具提供運行腳本的能力。您可以使用 wsadmin 工具來管理 WebSphere Application Server 安裝版本以及配置、應(yīng)用程序部署和服務(wù)器運行時操作。WebSphere Application Server 僅支持 Jacl 和 Jython 腳本語言。有關(guān) wsadmin 工具的更多信息,請參閱啟動 wsadmin 腳本客戶機主題。
過程
下一步做什么?
運行 wsadmin 命令后,將返回堆轉(zhuǎn)儲的文件名。有關(guān)查找堆轉(zhuǎn)儲的更多信息,請參閱查找和分析堆轉(zhuǎn)儲主題。在創(chuàng)建了一兩個堆轉(zhuǎn)儲之后,可使用許多內(nèi)存泄漏問題確定工具來分析問題。Memory Dump Diagnostic for Java? i 是一個脫機工具,此工具可用于診斷造成 Java 堆內(nèi)存泄漏的根本原因。請參閱診斷內(nèi)存不足錯誤和 Java 堆內(nèi)存泄漏,以了解更多信息。
診斷內(nèi)存不足錯誤和 Java 堆內(nèi)存泄漏
用于 Java? 的內(nèi)存轉(zhuǎn)儲診斷是一個脫機工具,用于診斷 Java 堆中內(nèi)存泄漏背后的根本原因。此工具分析內(nèi)存轉(zhuǎn)儲(堆轉(zhuǎn)儲)的公共格式,該轉(zhuǎn)儲來自運行了 WebSphere? Application Server 的 Java 虛擬機(JVM)。內(nèi)存轉(zhuǎn)儲的分析用于識別可能是內(nèi)存泄漏根本原因的 Java 堆中的數(shù)據(jù)結(jié)構(gòu)。此分析也識別主要組成應(yīng)用程序的 Java 堆占用量的匯總對象組。此工具能夠分析出現(xiàn)內(nèi)存不足問題的生產(chǎn)環(huán)境應(yīng)用程序服務(wù)器中非常巨大的內(nèi)存轉(zhuǎn)儲。
在您開始之前
IBM? 可移植堆轉(zhuǎn)儲(.phd),用于大多數(shù)平臺上的 WebSphere Application Server V5.1.x 和更高版本
IBM 文本,用于大多數(shù)平臺上的 WebSphere Application Server V4.x 和 V5.0.x
HPROF,用于 HP-UX 和 Solaris 平臺上的 WebSphere Application Server 安裝
關(guān)于本任務(wù)
當(dāng)對象引用在它們不再需要后無意保留時,內(nèi)存泄漏可能在 Java 應(yīng)用程序中發(fā)生。即使 Java 語言有內(nèi)建的垃圾回收機制來幫助程序員顯式釋放對象,這個問題也會阻止 Java 垃圾回收進程釋放內(nèi)存。由于 Java 堆中大量的對象以及這些對象之間的復(fù)雜關(guān)系,因此很難在大型的復(fù)雜 Java 應(yīng)用程序中診斷內(nèi)存泄漏。
存在兩種類型的分析機制:單一轉(zhuǎn)儲分析和兩個轉(zhuǎn)儲的比較分析。此工具列示可疑的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型,并在一個基于瀏覽器的交互式 Web 應(yīng)用程序中顯示內(nèi)存轉(zhuǎn)儲的內(nèi)容。該工具在具有相似所有權(quán)結(jié)構(gòu)的數(shù)據(jù)類型有效集圖形布局中顯示占用量分析結(jié)果。此工具將內(nèi)存轉(zhuǎn)儲的內(nèi)容顯示在用于瀏覽的交互式樹形視圖中,以及分別顯示在對象和數(shù)據(jù)類型的兩個表視圖中。樹形視圖允許您查找每個對象的所有入局和出局引用,以及查看每個具有可疑內(nèi)存泄漏的數(shù)據(jù)結(jié)構(gòu)中的容器對象位置。
以脫機方式分析內(nèi)存轉(zhuǎn)儲為識別內(nèi)存泄漏背后的根本原因提供了低開銷的機制。此機制特別適合于在生產(chǎn)中或在壓力測試環(huán)境中運行的大型應(yīng)用程序,在這些地方經(jīng)常首先檢測到內(nèi)存泄漏。
過程
結(jié)果
這樣就識別出內(nèi)存泄漏的可能根本原因。
- Java 堆分段存儲。在沒有連續(xù)的大塊可用 Java 堆空間可用來分配 Java 對象時,此分段存儲發(fā)生。此問題存在不同的原因,包括存在鎖住對象,或者因為出現(xiàn)重復(fù)的大對象分配。
- 本機堆中的內(nèi)存泄漏。當(dāng)一個本機組件(如 DB2? 連接)正在泄漏時,此問題發(fā)生。
對于這兩種情形,不管是否有大量的可用 Java 堆空間,內(nèi)存不足錯誤都可能發(fā)生。因此,用于 Java 的內(nèi)存轉(zhuǎn)儲診斷工具在確定這些情況中的根本原因時可能無效。
允許自動生成堆轉(zhuǎn)儲
使用此任務(wù)來啟用自動化堆轉(zhuǎn)儲生成。如果使用的 Sun Java 虛擬機(JVM)包含在 HP-UX 和 Solaris 操作系統(tǒng)上運行 WebSphere Application Server,那么不支持此功能。您需要研究一下如何在 Sun JVM 上收集堆轉(zhuǎn)儲,或者致電 IBM 支持機構(gòu)。
在您開始之前
雖然只有在檢測到內(nèi)存泄漏時才會生成堆轉(zhuǎn)儲,但是,您必須知道,生成堆轉(zhuǎn)儲時會嚴(yán)重影響 WebSphere Application Server 的性能,并且時間長達數(shù)分鐘。關(guān)于本任務(wù)
自動化堆轉(zhuǎn)儲生成支持,它僅在 IBM Software Development Kit 中可用,并且會分析 AIX、Linux 和 Windows 操作系統(tǒng)上的內(nèi)存泄漏問題。
在相應(yīng)的時間手動生成堆轉(zhuǎn)儲可能很困難。為了在進行內(nèi)存泄漏檢測時幫助您分析內(nèi)存泄漏問題,提供了一些自動化堆轉(zhuǎn)儲生成支持。此功能僅對 AIX、Linux 和 Windows 操作系統(tǒng)上的 IBM Software Development Kit 可用。
大多數(shù)內(nèi)存泄漏分析工具對兩個堆轉(zhuǎn)儲執(zhí)行不同形式的評估。在檢測可疑的內(nèi)存情況時,將在相應(yīng)的時間自動生成兩個堆轉(zhuǎn)儲。通常理想狀態(tài)是一進行問題檢測時就執(zhí)行初始堆轉(zhuǎn)儲。在確定泄漏了一定量的內(nèi)存后,監(jiān)視內(nèi)存使用情況并進行另一次堆轉(zhuǎn)儲,所以可比較堆轉(zhuǎn)儲以找出泄漏源。
為了在進行內(nèi)存泄漏檢測時幫助您分析內(nèi)存泄漏問題,提供了一些自動化堆轉(zhuǎn)儲生成支持。
要自動生成堆轉(zhuǎn)儲,請在管理控制臺中執(zhí)行以下步驟:
過程
- 在管理控制臺導(dǎo)航樹中單擊服務(wù)器 > 應(yīng)用程序服務(wù)器。
- 單擊 server_name > 性能和診斷顧問程序配置。
- 單擊運行時選項卡。
- 選中啟用自動堆轉(zhuǎn)儲收集復(fù)選框。
- 單擊確定。
結(jié)果
完成這些步驟后,系統(tǒng)將自動生成堆轉(zhuǎn)儲。要點:為了節(jié)省磁盤空間,如果在 WebSphere Application Server 主目錄中已有 10 個以上的堆轉(zhuǎn)儲,性能和診斷顧問程序就會停止創(chuàng)建堆轉(zhuǎn)儲。根據(jù)應(yīng)用程序服務(wù)器上的堆大小以及工作負載的不同,創(chuàng)建堆轉(zhuǎn)儲的成本可能非常高,并且可能會暫時影響系統(tǒng)性能。