惯例,交代背景,Linux服务器、Java环境、tomcat ,固然,这些都是用了一个叫oneinstack的东西,安装很方便。java
问题来了。chrome
症状:打开网站的时候浏览器一直转,页面打不开 。浏览器
观察:日志里写了java.lang.OutOfMemoryError: PermGen space 。tomcat
分析:这个错误呢,也就是个内存溢出,内存通常分两种,这种是保存new class 和mete信息的,基本上就是说,若是第三方jar包或者项目类太多,就会致使这个内存区间溢出。而且这个内存区是不会被Java回收的,Java的自留地。服务器
解决:设置java的启动参数,也就是内存配置,相似-server -XX:PermSize=64M -XX:MaxPermSize=128m这种,是否是好眼熟。本身改改PERMSIZE的大小到合适就能够了,我以前是64M,爆了,我如今改得256M 。工具
坑:通常的环境,若是是本身解压或安装的tomcat ,配置这个参数是在 %tomcathome%/bin/cataline.xx文件里,那这个变态的oneinstack呢?他妈的是放在setenv.sh里。。。。。。。。。。是这样吗? 原配有这个文件吗 ?难怪劳资反复改了好几回,都tmd不生效。。。。网站
其余:哦,还有,在追踪这个问题的时候学会了Java原生调试跟踪工具 ,两个命令 jps、jstat ,相关用法问谷歌去吧,另外在用这两个命令的时候我也遇到一个坑,oneinstack新建了一个WWW用户,启动tomcat的时候是用的www用户,因此刚开始在使用这两个命令的时候,死活找不到PID对应的内容,就是这两个命令不能正确返回你想要得东西。而后只要su www ,再执行就OK了。google