增加tomcat jvm的虚拟内存

本文记录了在使用Tomcat6.0与JDK1.6.0环境下遇到的Java堆内存溢出错误,并详细展示了错误日志。通过分析发现问题是FreeMarker处理模板时消耗过多内存导致。最终通过调整JVM的初始化堆内存和最大堆内存设置解决了问题。
摘要由CSDN通过智能技术生成

jdk1.6.0

tomcat6.0(安装版)

报错如下:

[plain]  view plain copy
  1. 2012-3-22 1:12:34 org.apache.catalina.core.StandardWrapperValve invoke  
  2. 严重: Servlet.service() for servlet default threw exception  
  3. java.lang.OutOfMemoryError: Java heap space  
  4.     at sun.text.UCompactIntArray.initPlane(Unknown Source)  
  5.     at sun.text.UCompactIntArray.setElementAt(Unknown Source)  
  6.     at java.text.RBTableBuilder.addOrder(Unknown Source)  
  7.     at java.text.RBTableBuilder.addComposedChars(Unknown Source)  
  8.     at java.text.RBTableBuilder.build(Unknown Source)  
  9.     at java.text.RBCollationTables.<init>(Unknown Source)  
  10.     at java.text.RuleBasedCollator.<init>(Unknown Source)  
  11.     at java.text.Collator.getInstance(Unknown Source)  
  12.     at freemarker.core.Environment.getCollator(Environment.java:736)  
  13.     at freemarker.core.ComparisonExpression.isTrue(ComparisonExpression.java:165)  
  14.     at freemarker.core.IfBlock.accept(IfBlock.java:80)  
  15.     at freemarker.core.Environment.visit(Environment.java:209)  
  16.     at freemarker.core.MixedContent.accept(MixedContent.java:92)  
  17.     at freemarker.core.Environment.visit(Environment.java:209)  
  18.     at freemarker.core.Environment.process(Environment.java:189)  
  19.     at freemarker.template.Template.process(Template.java:237)  
  20.     at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:187)  
  21.     at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)  
  22.     at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)  
  23.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)  
  24.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)  
  25.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)  
  26.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)  
  27.     at com.ponyjava.common.struts2.interceptor.UrlInterceptor.doIntercept(Unknown Source)  
  28.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)  
  29.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)  
  30.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)  
  31.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)  
  32.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)  
  33.     at org.apache.struts2.components.ActionComponent.executeAction(ActionComponent.java:289)  
  34.     at org.apache.struts2.components.ActionComponent.end(ActionComponent.java:172)  
  35.     at org.apache.struts2.views.freemarker.tags.CallbackWriter.afterBody(CallbackWriter.java:84)  

“可以找找看应用目录下面有没有生成 dump 文件,大小一般比你所配置JVM内存大小更大些。
然后用工具对dump文件进行分析,寻找数量多的可疑对象。——ldh911

解决中。。。

目前解决方案:

增加jvm的虚拟内存

由于tomcat是安装版本,于是采用修改注册表方法:

运行regedit

找到

Apache SoftWare Foundation/Prorun2.0/Tomcat6/Parameters/Options

双击Options->

[plain]  view plain copy
  1. -Dcatalina.home=D:\Tomcat 6.0  
  2. -Dcatalina.base=D:\Tomcat 6.0  
  3. -Djava.endorsed.dirs=D:\Tomcat 6.0\endorsed  
  4. -Djava.io.tmpdir=D:\Tomcat 6.0\temp  
  5. -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager  
  6. -Djava.util.logging.config.file=D:\Tomcat 6.0\conf\logging.properties  

在结尾添加

[plain]  view plain copy
  1. -Xms512m  
  2. -Xmx512m  
然后重启tomcat进入

http://localhost:8080/manager/status

查看Free memory: 486.02 MB Total memory: 508.06 MB Max memory: 508.06 MB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值