我们正在对我们的应用程序进行性能测试。 在测试期间,我们发现非堆内存和加载类的总数不会随时间增加。
我们的猜测可能是某些第三方jar或应用程序代码泄漏。
找到此类泄漏或针对问题的最佳方法是什么? 有哪些工具可以帮助我找到根源?
我们正在使用Jboss EAP 6.1。
答案 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)。使用这些可以让您了解为什么您看到的数量超过了预期的加载类数。
我在尝试查看非堆内存使用情况之前就开始了。