如何分析和定位Java堆外内存泄漏?
理解jstat输出的术语含义是准确分析的基础。例如,S0C和S1C分别代表两个Survivor区的容量,S0U和S1U则是已使用空间。EC和EU对应Eden区的容量和已使用量。这些指标能帮助我们精确计算年轻代的内存分布,判断是否存在Survivor区空间不足导致对象提前晋升到老年代的情况。
理解jstat输出的术语含义是准确分析的基础。例如,S0C和S1C分别代表两个Survivor区的容量,S0U和S1U则是已使用空间。EC和EU对应Eden区的容量和已使用量。这些指标能帮助我们精确计算年轻代的内存分布,判断是否存在Survivor区空间不足导致对象提前晋升到老年代的情况。
Jstat确实是老派的硬核工具,参数多到让人头大。不过说真的,堆外内存泄漏光看jstat是不够的,它主要管堆内。要查堆外,还得配合NMT(Native Memory Tracking)或者Arthas的native memory命令,不然很容易跑偏。