如何防止 Netbeans 中的 PermGen 空间错误?
2022-09-01 15:40:04
每 15-30 分钟,Netbeans 就会显示一个 “”。从我从Google学到的东西来看,这似乎与类加载器泄漏或内存泄漏有关。java.lang.OutOfMemoryError: PermGen space
不幸的是,我发现的所有建议都与应用程序服务器有关,我不知道如何将它们适应 Netbeans。(我甚至不确定这是同样的问题)
我的申请有问题吗?如何找到来源?
每 15-30 分钟,Netbeans 就会显示一个 “”。从我从Google学到的东西来看,这似乎与类加载器泄漏或内存泄漏有关。java.lang.OutOfMemoryError: PermGen space
不幸的是,我发现的所有建议都与应用程序服务器有关,我不知道如何将它们适应 Netbeans。(我甚至不确定这是同样的问题)
我的申请有问题吗?如何找到来源?
这是因为不断的类加载。
Java将类字节代码和所有常量(例如字符串常量)存储在永久堆中,默认情况下不会进行垃圾回收(这在大多数情况下是有意义的,因为类在应用程序的生存期内只加载一次)。
在通常在整个生命周期内加载类的应用程序中,这些类是:
您需要打开永久堆垃圾回收以防止此错误。
我使用选项
-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
(阻止了我的 eclipse 3.4 抛出 “”,所以它也应该与 netbeans 一起使用)。java.lang.OutOfMemoryError: PermGen space
编辑:请注意,对于 Netbeans,您可以在中设置这些选项:您应该为这些选项添加前缀并添加它们(有关详细信息,请参阅 中的注释)。[Netbeans installation]\etc\netbeans.conf
-J
netbeans_default_options
netbeans.conf
尝试将以下参数添加到 netbeans netconf: -J-XX:MaxPermSize=256m