有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

内存不足的java解释探查器输出:PermGen空间错误

我正在开发一个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%。以下是一些屏幕截图: screenshot 1screenshot 2

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

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

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


共 (0) 个答案