首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将jmap/jhat输出追溯到代码中导致PermGen OutOfMemory错误的行?

如何将jmap/jhat输出追溯到代码中导致PermGen OutOfMemory错误的行?
EN

Stack Overflow用户
提问于 2014-03-05 05:25:11
回答 1查看 714关注 0票数 0

我使用的是JBoss 7.1.3、JDK1.6和Mac10.9.1。在使用Maven Jboss作为插件对我的WAR文件进行多次部署/取消部署之后,我的服务器会死机,并显示以下错误…

代码语言:javascript
复制
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")时,输出完全难以辨认。有一堆行引用了我们编写的类,例如

代码语言:javascript
复制
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错误的代码部分呢?

EN

回答 1

Stack Overflow用户

发布于 2014-03-05 22:44:32

如果你想追踪类加载器泄漏,我建议你使用一些比jmap和jhat更高级的工具--比如Eclipse Memory Analyzser (MAT)。Here是如何进行此类分析的逐步指南。这是一个博客系列的一部分,它解释了你在代码中可能犯下的不同错误,以及可能引发问题的第三方库的列表。

如果你想解决这个问题,还有一个Leak prevention library

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22183382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档