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

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

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

什么是最好的方法来找到这种泄漏或针指出问题? 任何可以帮助我找到根源的工具?

我们正在使用Jboss EAP 6.1。


通过JDK的jvisualVm首先进行堆转储,并使用内存分析器(MAT)进行分析。

然后在标题'Non-Heap'中看到这个方向:http://www.yourkit.com/


这听起来像是你的代码中的某些东西可能会不断创建新的动态代理类。 我认为这会给你带来你所描述的特征的泄漏。

其他问答解释了用于跟踪Java存储泄漏的一般技术; 例如

  • 如何找到Java内存泄漏
  • 在Java中跟踪内存泄漏/垃圾收集问题
  • 我建议你先尝试识别Class对象。 我怀疑你会发现堆内存分配与它们相关联; 例如由JIT编译器产生的相关的本地代码段。


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

    在尝试查看非堆内存使用情况之前,我会先从那里开始。

    链接地址: http://www.djcxy.com/p/19841.html

    上一篇: Non heap memory and No of loaded classes keeps on increasing

    下一篇: JVM Process vs JVM Heap memory usage