我试图分析我的应用程序,该应用程序抛出了内存不足异常,如下所示。
java.lang.OutOfMemoryError:无法创建新的本机线程
在Google上搜索了一下,我发现这可能是因为c堆耗尽了。我检查了GC日志,堆内存可用,这不是罪魁祸首。我需要分析c堆内存使用情况。有没有提供这种分析的工具。
当堆(年轻的gen / old gen)已满时,垃圾收集会释放内存,但是如果c堆已满,该怎么办呢。 JVM /如何在这里提供空闲内存。
编辑: 我已经检查了线程数,这比我的应用程序能够处理的要少得多。所以线程似乎不是这里的原因。如果线程计数增加但是应用程序在中等负载下运行了很长时间并且中等线程计数,则不会发生异常。
答案 0 :(得分:0)
如果您正在使用JNI(或调用程序),您的本机代码可能会出现内存泄漏。特别是,C和C ++不是垃圾收集,因此很容易导致这种情况。