Java 如何查看PermGen中存储的确切内容?
在我的应用程序中,我有一个PermGen内存不足错误,我想看看是什么导致了它 我已通过VisualVM连接到我的应用程序 我想知道到底是什么在我的应用程序中消耗了这么多PermGen内存,但我不能在VisualVM中使用特殊的“PermGen堆”。我只能喝标准的啤酒 使用VIsualVM或其他工具是否有可能找出到底是什么消耗了我所有的PermGen内存 更新 这个问题被标记为“重复”,但事实上,我在提到的主题中没有看到我的问题的答案。问题是,我没有找到一种方法来准确列出在我的permgen空间中消耗内存的内容 目前,从该主题中,我知道以下提示:Java 如何查看PermGen中存储的确切内容?,java,visualvm,permgen,Java,Visualvm,Permgen,在我的应用程序中,我有一个PermGen内存不足错误,我想看看是什么导致了它 我已通过VisualVM连接到我的应用程序 我想知道到底是什么在我的应用程序中消耗了这么多PermGen内存,但我不能在VisualVM中使用特殊的“PermGen堆”。我只能喝标准的啤酒 使用VIsualVM或其他工具是否有可能找出到底是什么消耗了我所有的PermGen内存 更新 这个问题被标记为“重复”,但事实上,我在提到的主题中没有看到我的问题的答案。问题是,我没有找到一种方法来准确列出在我的permgen空间中
如果我错过了这个答案,请告诉我。VisualVM的堆转储应该足以调查您的permgen问题-我必须解决太多的permgen内存泄漏问题,VisualVM始终是我的出发点 如果您执行堆转储,它还将包括关于permgen的信息-类、类加载器等-我个人使用-只需加载整个转储,它可以提供泄漏可疑报告、重复类报告等。通常,我只需转到重复类列表,右键单击并选择“查找GC根”从那里你通常可以缩小一些问题的范围 这可能会有帮助(尽管没有详细阅读): 这似乎是相同的问题/答案:
顺便问一下,您在类加载等方面做了什么特别的工作吗?显式重新加载或使用类加载器加载?它只是纯Java吗?它是否在容器等中?类和堆栈框架进入PermGen。您是否有过多的类或线程(每个线程都有自己的堆栈)?这里有一个解决方案:静态方法/变量也会进入permgen,以及任何string.intern()用法(在JDK7之前)等等。spudone,“静态方法进入permgen”是什么意思?