簡體   English   中英

如何將jmap / jhat輸出追溯到代碼中導致PermGen OutOfMemory錯誤的行?

[英]How do I trace jmap/jhat output back to lines in my code that are causing PermGen OutOfMemory errors?

我正在使用JBoss 7.1.3,JDK 1.6和Mac 10.9.1。 在使用Maven Jboss AS插件部署/取消部署WAR文件后,服​​務器因以下錯誤而死亡...

15:05:10,120 ERROR [org.xnio.listener] (Remoting "daves-macbook-pro:MANAGEMENT" read-1) A channel event listener threw an exception: java.lang.OutOfMemoryError: PermGen space

sudo jmap -dump:format=b,file=/tmp/leak 16274
sudo jhat -J-Xmx2048m /private/tmp/leak

但是,當我訪問結果頁面http://locohost.mymachine.com:7000/ (除了顯示“ localhost”而不是“ locohost.mymachine.com”)時,輸出完全難以辨認。 有很多行引用了我們編寫的類,例如

Package org.mainco.subco.myproject.interaction.domain
class org.mainco.subco.myproject.interaction.domain.Note [0x2d145258]
class org.mainco.subco.myproject.interaction.domain.NoteDto [0x2a8de180]
class org.mainco.subco.myproject.interaction.domain.Note_ [0x2baa5980]

但是,如何將其追溯到導致這些PermGen錯誤的代碼部分呢?

如果要跟蹤類加載器泄漏,我建議您使用比jmap和jhat更高級的工具-例如Eclipse Memory Analyzser(MAT)。 是逐步指南,說明如何進行此類分析。 它是博客系列的一部分,該博客系列解釋了您在代碼中可能犯的各種錯誤以及可能引發問題的第三方庫。

還有一個防泄漏庫 ,以防您遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM