这段时间一直在用StyleReport做报表,把报表的web系统部署到Tomcat5.5.20上之后,
一直都是内存溢出,烦的我头都大了。今天终于解决了,哈哈! 记下来,以备忘。
我自己的办法:
用myEclipse启动Tomcat时的设置,如下图 (这里竟然不能上传图片,只好用文字描述了)
在myEclipse中选择:
Window->Preferences,
在弹出的窗口的左边的数上选择:
MyEclipse Enterprise workbench->Servers->Tomcat->Tomcat5.x
(我用的是Tomcat5.5.20)->JDK,
这时右边的面板下方出现一个 Optional Java VM argumenets的文本域,
在里面加入: -Xmn512m -Xmx800m
其中:-Xmn512m –Xmx800m的意思java虚拟机的
最小内存为512M,
身后被很多强大的公司和组织默默的支持着,
造就了一个可以和weblogic等收费容器抗衡的地位,但是tomcat本身还是存在一些缺陷。
在tomcat设计之初,因为考虑到客户的服务器性能不同,防止虚拟内存不足,
所以tomcat默认设置jvm允许使用内存数为最小64M,最大128M,
但是在一些项目占用资源比较庞大,或者高并发量的项目中,
很容易造成内存不足而tomcat没有任何征兆就自动停止。
最好的办法是修改tomcat对jvm内存使用的限制。
方法有两个:
1,编辑%CATALINA_HOME%/bin下面的catalina.bat文件,
在最上面第一行前面写上 set JAVA_OPTS=-Xms512m -Xmx1024m
其中-Xms表示jvm最小内存数,-Xmx表示最大内存数
比如,我这里都设置成最小512,最大1024
当然,这个最小最大并不是只能使用1024的意思,其实这个设置是对系统来设置的,
因为这个jvm占用内存数实际上是针对虚拟内存来说,这个设置表示,
无 论系统怎么占用虚拟内存,都要保证最小512M的虚拟内存共给jvm使用,
当然,就算我jvm占用再大,也不会超过1024,来威胁系统的内存使用 。
2,在环境变量里面添加如下两个值
加上TOMCAT_OPTS, CATALINA_OPTS两个属性,
如 SET CATALINA_OPTS= -Xms512m -Xmx1024m;
意义同上 但是如何查看jvm内存使用多少呢?
最简单的办法就是打开任务管理器–>进程–>查看–>选择列,
选上虚拟内存数->确 定,就会看见虚拟内存数了,
这时,你会看见虚拟内存会有512~1024M的空间被占用,
那么就是被你设定好的值所占用了,jvm的内存使用,
就会在这个 被占用的范围内使用
另外一个办法就是写一个小脚本,如命名为ram.jsp
代码为