Code Bye

java项目tomcat启动后 内存一直升,直到内存耗完,mysql 先停掉

这两天服务总是频繁死掉,好烦,今天本人用jconsole  查看到cpu 正常,但是内存一直在慢慢的上升,快上到顶峰了,本人点了一下
执行GC 然后内存就下来了,下来后假如不管他,内存还会再次一路高歌猛进,本人估计是程序造成了内存泄露,然后本人就想知道
到底是哪些程序造成的,想看看到底是什么代码让内存一直往上升,但是本人百度了好久,都没有找到教本人怎么样找到代码的方法,全部特在此讨教,怎么解决。谢谢,最后在问一下,图中的housekeeper 线程数也在一直增加,是为什么?百度了没有满意的答案!


解决方案:39分
tomcat使用内存原理,tomcat它有一个默认的每次设置,启动tomcat时,它会将java工程的lib的jar包和class文件加载到内存中,假如lib的jar包和class文件以及配置文件的大小大于tomcat的默认内存时,它会报内存溢出outofmemoryerror。
引起的问题可能有事tomcat的初始内存太小,另外可能是你的代码有bug,运行时,一直占用资源,导致内存溢出。
你可以尝试设置一下tomcat的初始大小:
设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。
可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置
三、实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”
JAVA_OPTS=”-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX: NewSize=192m -XX:MaxNewSize=384m”
CATALINA_OPTS=”-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m”
Linux:
在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh添加:
JAVA_OPTS=””-Xms512m -Xmx1024m””要加“m”说明是MB,否则就是KB了,在启动tomcat时会 报内存不足。
-Xms:初始值-Xmx:最大值-Xmn:最小值
Windows
在catalina.bat最前面加入set JAVA_OPTS=-Xms128m -Xmx350m
假如用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.
但是假如不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了..

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java项目tomcat启动后 内存一直升,直到内存耗完,mysql 先停掉