Java 解释探查器输出是否内存不足:PermGen空间错误

Java 解释探查器输出是否内存不足:PermGen空间错误,java,memory-leaks,profiling,netbeans-platform,jmonkeyengine,Java,Memory Leaks,Profiling,Netbeans Platform,Jmonkeyengine,我正在开发一个Netbeans平台模块jMonkeyEngine插件,确切地说,我使用了JavaFX来构建UI。TopComponent中的JFXPanel显示JavaFX内容。我创建了一个新的Netbeans文件类型,JavaFXUI用于修改与该文件类型关联的DataObject的内容。最近,由于内存不足,我的应用程序开始崩溃:Permgen空间错误,我无法确定导致崩溃的确切代码,因为每次发生这种情况时,堆栈跟踪都指向不同的线程和代码行。我尝试使用-XX:MaxPermSize=1g命令行开关

我正在开发一个Netbeans平台模块jMonkeyEngine插件,确切地说,我使用了JavaFX来构建UI。TopComponent中的JFXPanel显示JavaFX内容。我创建了一个新的Netbeans文件类型,JavaFXUI用于修改与该文件类型关联的DataObject的内容。最近,由于内存不足,我的应用程序开始崩溃:Permgen空间错误,我无法确定导致崩溃的确切代码,因为每次发生这种情况时,堆栈跟踪都指向不同的线程和代码行。我尝试使用-XX:MaxPermSize=1g命令行开关将我的PermGen空间增加到1GB,但没有解决这个问题。因此,我使用Netbeans Profiler分析了我的应用程序,以查找任何内存泄漏,但我对分析探查器输出/堆转储是完全陌生的。如前所述,每次错误发生时,堆栈跟踪和堆转储都指向不同的线程和不同的代码行,有时是我为插件编写的线程和代码行,有时是通过Netbeans平台API提供的线程和代码行。在所有堆转储分析中唯一常见的是,VM遥测图中堆大小和使用的堆空间之间的差异突然增加,“在GC中花费的时间”立即从0-3%上升到100%。以下是一些屏幕截图: ,

您还可以看到,当应用程序崩溃时,最左侧遥测图中的堆大小区域上升到-XX:MaxPermSize中指定的最大值

这是否意味着应用程序中存在内存泄漏??如果是这样,我如何检测它,因为每次发生错误时,错误的来源都不同

下面是我正在使用的命令行:-J-Xms32m-J-Xmx256m-J-XX:PermSize=512m-J-XX:MaxPermSize=1g-J-XX:MaxDirectMemorySize=2048m