JDK自帶了一堆JVM的監控工具很多都不錯。不過有一套組合工具我覺得比較坑爹的,那就是jmap+jhat。
jmap可以對JVM內存做一個快照,然后jhat可以對快照進行分析,且自帶了一個小的http server,可通過web方式訪問內存分析結果,這對於分析內存中類的裝載情況,特別是內存泄露還是比較有幫助的。
但這套工具還是經不住大場面,有次有個4G的內存快照分析,jhat讓我無語了。用jhat分析這4G的快照,在32位操作系統下,那直接就out of memory,那也沒話講。換了台64位的服務器,還是out of memory依舊,關鍵是有時候運行了快大半小時了才報錯,郁悶啊。后來找了台最牛X的服務器,開了將近30G的內存,總算不報錯了。隨后的情況還是讓我無語,jhat的分析時間很長,總算分析結束開啟了web服務器,瀏覽器中打開的速度也奇慢無比,根本做不了操作。於是,決定放棄jmap+jhat,換其他工具。
后來嘗試了JProfiler和youkit java profiler,發現還是JProfiler好用,界面友好,響應快,功能強。而youkit java profiler會出現假死的情況。總之,推薦做較大的JVM的內存分析,推薦JProfiler,不推薦jmap+jhat和youkit java profiler
