我正在尝试分析我的应用程序,它抛出了一个内存不足异常,如下所示。
java.lang.OutOfMemoryError:无法创建新的本机线程
通过谷歌搜索,我发现这可能是因为c堆耗尽了。我已经检查了GC日志,堆内存是可用的,这不是罪魁祸首。我需要分析c堆内存的使用情况。有没有什么工具可以提供这种分析。
当堆( gen gen/ old gen)已满时,垃圾回收会释放内存,但如果c堆已满怎么办?JVM/在这里是如何释放内存的?
编辑:我已经检查了线程数,它比我的应用程序能够处理的线程数少得多。因此,线程似乎不是这里的原因。异常不是在线程计数增加时发生,而是在应用程序长时间处于中等负载和中等线程计数的情况下发生。
发布于 2013-11-11 04:32:09
如果您正在使用JNI (或调用具有JNI的程序),则您的本机代码中可能存在内存泄漏。特别是,C和C++没有垃圾回收,所以这很容易意外地导致。
https://stackoverflow.com/questions/19385988
复制相似问题