Java 如何摆脱永久空间?

Java 如何摆脱永久空间?,java,jakarta-ee,tomcat,glassfish,Java,Jakarta Ee,Tomcat,Glassfish,我受够了以下恼人的错误,我如何才能解决它?如果我用Tomcat而不是GlassFish,它能解决问题吗?我在本地运行,如果我在服务器上运行相同的应用程序,情况会一样吗 SEVERE: java.lang.OutOfMemoryError: PermGen space SEVERE: Exception in module org.glassfish.main.core.kernel [228] : java.lang.OutOfMemoryError: PermGen space SEVER

我受够了以下恼人的错误,我如何才能解决它?如果我用Tomcat而不是GlassFish,它能解决问题吗?我在本地运行,如果我在服务器上运行相同的应用程序,情况会一样吗

SEVERE: java.lang.OutOfMemoryError: PermGen space

SEVERE: Exception in module org.glassfish.main.core.kernel [228] : 
java.lang.OutOfMemoryError: PermGen space
SEVERE: Exception in module org.glassfish.main.core.kernel [228] : 
java.lang.RuntimeException: java.lang.OutOfMemoryError: PermGen space
SEVERE: Exception in thread "RMI RenewClean-[10.0.0.12:8686]" 

你试过增加玻璃鱼的记忆力吗

1) 转到
/glassfish/domain/domain/domain1/config

查找
-XX:MaxPermSize=

增加其值,例如-
198m或256m
或更大的值可能是
1024m


2) 停止玻璃鱼,然后重新启动

如果您在第一次尝试部署应用程序时遇到此错误,则通过domain.xml config增加permgen空间可能会有所帮助

但要小心,您可能遇到了glassfish缺陷,导致迭代部署中的permgen错误


无论何时重新部署应用程序,都需要重新启动服务器以清理内存,因为Tomcat也有类似的问题

更改内存大小只会延迟问题,但不会阻止它

此外,还需要使用IDE插件(如netbeans或其他可用软件)查找应用程序的内存泄漏


此外,正如Shaunak所说,您可以在/glassfish/domain/domain/domain1/config/domain.xml文件中更改perm内存的大小。

我们需要更多详细信息,尤其是JVM参数。我是glassfish的新手,在哪里可以找到这些参数?如果您在不重新启动服务器的情况下重新部署应用程序,此错误将在某个时刻发生,因为容器维护应用程序的旧副本。这是一个已知的问题:没有,但我需要找到问题所在,否则需要一直更改此内存大小。如果此内存太低,则最好将其增加1024m。您可能没有任何问题,但它仍然会在执行常规操作(如编译、部署等)时耗尽内存。请增加内存,然后让我监视Glassfish,看看它是否在不断占用内存。别忘了Java有一个非常高效的垃圾收集器:)而且@Juned指出的错误值得一看,一旦你增加了内存,如果它仍然用完了。它目前是192m,permSize=64m MaxPermSize=192mokay,如果您的系统内存良好,请尝试在使用该应用程序几次后将其增加到512m或1024M,当我尝试重新运行它时,它会遇到以下问题error@TimNorman您可能需要升级到包含此修复程序的版本,或者如您在问题中所提到的,如果您愿意,请转到tomcat。