如何查找由java代码引起的本机内存泄漏?

如何查找由java代码引起的本机内存泄漏?,java,netbeans,memory-leaks,Java,Netbeans,Memory Leaks,我有一个java代码,它基本上创建、显示并在一定次数的迭代中销毁几何体对象,如球体。我使用本机opengl调用来显示这些对象。由于本机内存不断增加,代码中存在一些内存泄漏。我通过查看任务管理器中的“工作链接集”内存来检查本机内存。然而,当我运行netbeans探查器时,我没有发现任何内存泄漏。那么,如何找到本机内存泄漏?是否有任何工具可用于可视化本机内存和堆内存的使用情况 谢谢 JConsole可以帮助查看Java内存使用情况 如果您使用的是现有的Java OpenGL库,则可能使用的是可能无法

我有一个java代码,它基本上创建、显示并在一定次数的迭代中销毁几何体对象,如球体。我使用本机opengl调用来显示这些对象。由于本机内存不断增加,代码中存在一些内存泄漏。我通过查看任务管理器中的“工作链接集”内存来检查本机内存。然而,当我运行netbeans探查器时,我没有发现任何内存泄漏。那么,如何找到本机内存泄漏?是否有任何工具可用于可视化本机内存和堆内存的使用情况


谢谢

JConsole可以帮助查看Java内存使用情况

如果您使用的是现有的Java OpenGL库,则可能使用的是可能无法释放的直接缓冲区。如果您自己编写了本机代码,这可能不适用


对于本机内存,如果您的Java OpenGL库使用的是直接缓冲区,我注意到仅在JDK 7中(我运行的是预发行版),在JConsole中可以看到一些以前版本中没有的额外MBean,这可能会有所帮助。查看JConsole中java.nio.BufferPool下的MBeans选项卡。在“direct”bean下,您可以看到直接缓冲区使用的内存。如果这种情况持续下去,可能表明内存直接泄漏(可能是因为没有关闭/处理Java代码中的OpenGL资源)。

Java有一个称为本机内存跟踪器的免费工具。您可以对其进行基线设置,然后定期生成差异


使用这种差异,您可以轻松确定内存的哪一部分正在泄漏内存。

要分析C/C++,您需要一个C/C++分析器。i、 这不是Java或Netbeans中的内存泄漏。