最近一个app的后台Tomcat,经常出现崩溃,检查日志发现是PemGen Space: out of memery错误,本来认为这个问题容易解:修改catalina.bat的配置,将PermSize和MaxPermSize两个参数设得大一点就可以了。谁知道打开以后,发现已经设置为:-XX:PermSize=256M -XX:MaxPermSize=512M。这样要是还能永久区内存不足,得加载了多少class呀?!
Google以后发现,windows里面,如果已经将tomcat配置为服务(用service.bat install 安装过),那么catalina.bat是无效的,得用bin下面的tomcat7w.exe,打开GUI界面配置参数。尝试运行tomcat7w.exe又失败,提示“没有安装这个服务”
原来这里有个很狗血的设定:该exe只查找与自己同名的服务,而我当初配置服务时,指定了服务名:service.bat install tomcat-backend,(这是由于此服务器上有两个tomcat服务,必须区分一下),于是修改可执行文件名为:"tomcat-backendw.exe",执行成功:

在此添加配置后,问题解决!
本文记录了一次解决Tomcat作为服务运行时遭遇的内存溢出问题。通过调整PermGen内存分配并未解决问题,最终发现需通过tomcat7w.exe进行配置。文中详细介绍了问题定位及解决过程。
195

被折叠的 条评论
为什么被折叠?



