Chinaunix首页 | 论坛 | 博客
  • 博客访问: 263980
  • 博文数量: 27
  • 博客积分: 713
  • 博客等级: 上士
  • 技术积分: 294
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-25 09:09
文章分类
文章存档

2013年(2)

2012年(6)

2011年(15)

2010年(4)

分类: WINDOWS

2010-06-21 17:47:05

 
公司一台Win2003 server的机器, 上面跑Tomcat 5.
最近,不知道怎么,Tomcat经常不正常, 每天要重起一遍Tomcat的服务才可以.
查log发现,有很多
java.lang.OutOfMemoryError: Java heap space

在网上查了下, 一般是JVM的内存不足引起的, JVM默认只有64M的内存, 而这个tomcat上有很多webapps,估计是内存不够了.
按照网上的文章, 改了catalina.bat, 增加
set JAVA_OPTS=-server -Xms1024m -Xmx1536m -XX:MaxNewSize=512m

停掉Tomcat的服务
运行catalina.bat, 在manager/html里面看到

JVM

Free memory: 891.91 MB Total memory: 1048.18 MB Max memory: 1479.12 MB



看来问题是可以解决了.
不过新的问题来了.
用catalina.bat起来的Tomcat可以用更大的JVM内存, 但是服务器上的Tomcat是用服务的方式启动的. 用服务方式启动的时候, 依旧使用的是默认64M的JVM内存.
试过了在系统变量里面增加JAVA_OPTS环境变量, 重起服务,无效.
后来看了tomcat里面的service.bat. 感觉是在注册表中有相关的JAVA参数.
终于在HKLM\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters里面找到一个叫JavaOptions的multi-string值,
在后面增加下列选项,如图
-server
-Xms1024m
-Xmx1536m
-XX:MaxNewSize=512m

 
重起Tomcat服务,JVM内存成功变成1G.
 
后记:不知道TOMCAT到底需不需要这么大的内存,运行一段时间看看,如果free memory一直很多的话,就把参数调小点,免得浪费服务器内存。赫赫
 
上面的设置适用于Tomcat5, 对于Tomcat6, 注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java中有专门关于"JvmMs"和"JvmMx"设置的键值

阅读(7527) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~