bea jrockit的确是个生产应用的好平台

公司有一台linux pc server,配置AMD2800+,内存1G,安装了tomcat5.5+sun jdk6.0,上面跑了10个左右Web应用,例如一些开发管理系统、项目演示等,tomcat已经设置了-Xms256M -Xmx768M -XX:PermSize=64M -XX:MaxPermSize=256M这些虚拟机参数。另外服务器上还有subversion、apache、openldap等服务,但一般过一段时间会tomcat死一下,所以设置了一个每天晚上自动重新启动一下。
近来因为项目紧张,服务器用的人多了,出现内存不足,top显示使用了约500M的swap空间,频繁出现java out of memory,tomcat经常死机,严重影响工作。而且还出现晚上不能重新启动的问题,早上过来服务器不可用,影响一天心情。

上周向公司申请了采购了几根1G的内存,这台服务器只分到一根1G条,且只有两根内存插槽,将就一下,升级到1.5G内存,同时了解到Bea JRockit已经解决了PermSize的问题,决定使用jrockit vm试试,结果出乎我意料的好。

我下载的是jrockit sdk 6.0,在linux上设置JAVA_HOME指向安装目录,并把$JAVA_HOME/bin加到PATH变量,修改catalina.sh,在前面加入:
JAVA_OPTS="-server -Xms256M -Xmx576M"

jrockit已经不需要-XX:PermSize这样的参数了。
使用一个星期以来,Tomcat从来没有死过,内存使用一直稳定在565M左右,系统总内存稳定在1480M左右,相当的稳定,而且java应用的速度感觉有很大的提高。

总体来说,我全力推荐在生产应用服务器上使用jrockit vm,它会给你带来意想不到的惊喜。但本地开发我还是选择使用sun java sdk,在我的开发机上,jrockit吃内存相对厉害,而我只有1G的内存。

注:所谓PermSize,是指vm为类描述信息分配的内存空间,随着动态类等技术的广泛应用,这一内存区默认的64M大小已经不能满足需要,而且,sun vm对这部分内存居然无法进行gc,所以需要设置一个比较大的PermSize。但长时间运行后特别是频繁进行JavaEE应用部署的话,仍然会出现out of memory异常。

你可能感兴趣的:(java,jdk,tomcat,应用服务器,linux)