2

我试图分析我的应用程序,该应用程序引发了内存不足异常,如下所示。

java.lang.OutOfMemoryError:无法创建新的本地线程

在谷歌上搜索了一下,我发现这可能是因为 c 堆已经耗尽。我检查了 GC 日志,堆内存可用,这不是罪魁祸首。我需要分析c堆内存使用情况。有没有提供这种分析的工具。

当堆(年轻一代/老一代)已满时,垃圾收集会释放内存,但如果 c 堆满了怎么办。JVM/ 这里的空闲内存如何?

编辑:我检查了线程数,这比我的应用程序能够处理的要少得多。所以线程似乎不是这里的原因。异常不是在线程数增加时发生,而是当应用程序在中等负载和中等线程数的情况下运行了很长时间时。

4

1 回答 1

0

如果您正在使用 JNI(或调用使用 JNI 的程序),您的本机代码中可能存在内存泄漏。特别是 C 和 C++ 没有垃圾回收,所以很容易意外造成。

于 2013-11-10T20:32:09.423 回答