![]() |
1
3
异常表明您的问题来自于填充PermGen空间。它是内存的一部分,Java在其中存储关于类的元数据(比如说加载的类的代码)。当您部署新的web应用程序时,您可以添加新的类并增加PermGen的负载。更糟糕的是,当您在90%的情况下重新部署同一个应用程序时,使用的类的先前版本将保留在内存中,因此您不会从PermGen释放“旧”内存,而只是将其添加到内存中(90%的估计来自于使用DataBase驱动程序、使用ThreadLocal、Scheduler线程的框架……实际上,这几乎总是发生)。 默认的排列太小(比如64M或类似的荒谬)。使用更高的值启动tomcat,您可以通过向tomcat传递JVM选项来实现,例如: JAVA_OPTS=-XX:MaxPermSize=512m-Xmx4024m (首先将perm大小设置为512MB,然后将堆大小设置为4G,这对于现代系统来说很好)。 您可以在启动tomcat之前设置此变量,或者(我更喜欢这样,您可以修改/bin/catalina脚本以始终在那里设置它们,这样,如果再次启动tomcat,您就不会“忘记”它们)。 从tomact 7开始,当您取消部署应用程序时,tomcat日志会显示内存中的应用程序警告(并填充PermGen),您可能需要检查它们并尝试解决一些问题(更新框架、正确关闭线程池…) |
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
g00dds · 如何在bash中从文件中的每一行解码base64? 2 年前 |
![]() |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |
![]() |
RafaÅ G. · 如何使用从文件读取的多行参数运行ssh? 3 年前 |
![]() |
Priya · 在shell脚本中多次运行python脚本 3 年前 |