非堆内存和加载类的数量不断增加

时间:2014-03-12 10:16:25

标签: java performance memory-leaks profiling jboss7.x

我们正在对我们的应用程序进行性能测试。 在测试期间,我们发现非堆内存和加载类的总数不会随时间增加。

我们的猜测可能是某些第三方jar或应用程序代码泄漏。

找到此类泄漏或针对问题的最佳方法是什么? 有哪些工具可以帮助我找到根源?

我们正在使用Jboss EAP 6.1。

3 个答案:

答案 0 :(得分:1)

通过VisualVm从JDK进行第一次堆转储并使用Memory Analyzer (MAT)进行分析。

然后在标题' Non-Heap':http://www.yourkit.com/

中向这个方向看

答案 1 :(得分:1)

在我看来,代码中的某些内容可能会不断创建新的动态代理类。我认为这会让你泄露出你所描述的特征。

其他Q& A解释了跟踪Java存储泄漏的一般技术; e.g。

我建议您首先尝试识别Class个对象。我怀疑你会发现堆外内存分配与它们相关联;例如由JIT编译器生成的关联本机代码段。

答案 2 :(得分:0)

JVM附带了几个工具,可以让你查看堆的内容(jhat和jmap)。使用这些可以让您了解为什么您看到的数量超过了预期的加载类数。

我在尝试查看非堆内存使用情况之前就开始了。