也谈JVM设置及垃圾回收
???今天在用jmeter对tomcat进行压力测试,经常出现out of memory错误,其实一看就是jvm内存溢出,只要设置tomcat启动是相关jvm参数即可,出于谨慎还是从网上从新认知了jvm设置及垃圾回收。
???????关于jvm设置及垃圾回收,网上资料很多,个人认为,http://blog.csdn.net/Leolu007/archive/2009/11/23/4857983.aspx还是不错的。此处,只想强调3点:
???????1、tomcat启动?jvm参数设置,一定要调整-Xms, -Xmx参数,默认heap内存太小,据说把-Xms和-Xmx最好设置成大小一致,并且-Xmx不要超过物理内存的80%。
???????JAVA_OPTS='-Xms1024m -Xmx1024m'
?
???????2、启用jdk的gc日志
???????看jdk的gc回收日志,还是比较有用的,可以洞悉每次回收花费多少时间,如果每次回收超过2秒钟则需要调整jvm启动参数设置了。
???????JAVA_OPTS='-verbose:gc -Xloggc:d:/gclog.log'
?
???????3、修改jdk默认的垃圾回收机制
???????Jdk默认的垃圾回收工作方式是Serial Collector,执行速度较慢。由于现在服务器都是多cpu,多核的,因此服务器上的jdk垃圾回收机制建议配置成:Concurent Mark-Sweep(CMS) Collector
???????JAVA_OPTS=’–XX:+UseConcMarkSweepGC’
?
http://blog.csdn.net/chuangxin/archive/2010/11/30/6046119.aspx