`

完美解决tomcat内存溢出问题

阅读更多
tomcat是目前应用十分广泛的一个Java servlet container与web服务器,反正5年来我是从4.0.6一直用到5.5.9,期间也出现过几次崩溃抛出类似hs_err_pid31199.log的log,不过绝大部分时间是运行平稳的。但java.lang.OutOfMemoryError 的异常相信真正用过tomcat的人都遇到过,抛开程序问题不谈(使用Borland的optimizeit可以查找,代码中可能有本应短期存在的obj,但是却被一个长生命期的ref引用着,因此gc无法回收这个obj。多半跟静态对象有关 ), 这个异常和JVM默认划分的内存上限是128M有关,如果你的业务足够繁忙,128M是远远不过的,好在现在的内存几乎达到了白菜价(到今天大概1G是 260元),一般的服务器都有2-4G的内存,所以你可以大方的给JVM分配上1G甚至更多,这样就可以避免内存溢出或大大增加异常的周期(1G都溢出, 那你的项目真是不错的热门业务啊!)。
1、linux下简单,在bin里找到catalina.sh,vi一下,紧跟着注释的后面增加一句:
JAVA_OPTS='-Xms256m -Xmx256m'
256是个例子,你可以根据物理内存情况写成1024甚至2048,不过个人建议有1024足够足够用了。
 
:wq后,重启tomcat即可,ps ax后看到tomcat的进程会变成类似
 
/opt/jdk1.6.0/bin/java -Xms256m -Xmx256m -Djava.endorsed.dirs=/opt/tomcat/common/e
 
有红色那句就说明生效了。
 
2、在windows下,如果使用控制台的方式,也就是直接执行startup.bat方式启动,可以通过修改catalina.bat
 
set JAVA_OPTS=-Xms256m -Xmx512m
 
注意,linux下有单引号,win下不用,如果加上单引号,tomcat根本起不来。
 
3、如果windows下tomcat被作为一种服务安装了,修改jvm的可用内存会有些麻烦,不过咱这也可以完美解决。
 
在安裝tomcat時若有勾選"NT Service(NT/2000/XP only)"
則安裝完成後在安裝目錄的"bin"目錄裡會有一個tomcat.exe的檔案
先把tomcat的服務停掉
在命令列模式下(运行里输入CMD)
將目錄切換到tomcat的bin目錄
用下面的命令把服務移除
 
tomcat -uninstall "Apache Tomcat 4.1"
 
接下來,写个批处理。
內容如下
set SERVICENAME=Apache Tomcat 4.1
set CATALINA_HOME=E:\Tomcat 4.1.24
set CLASSPATH=D:\j2sdk1.4.1_01\lib
set JAVACLASSPATH=%CLASSPATH%
set JAVACLASSPATH=%JAVACLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar
set JAVACLASSPATH=%JAVACLASSPATH%;%CATALINA_HOME%\common\lib\servlet.jar
set JAVACLASSPATH=%JAVACLASSPATH%;%JAVA_HOME%\lib\tools.jar
tomcat.exe -install "%SERVICENAME%" "%JAVA_HOME%\jre\bin\server\jvm.dll" -Djava.class.path="%JAVACLASSPATH%" -Dcatalina.home="%CATALINA_HOME%" -Xms512m -Xmx768m -start org.apache.catalina.startup.Bootstrap -params start -stop org.apache.catalina.startup.Bootstrap -params stop -out "%CATALINA_HOME%\logs\stdout.log" -err "%CATALINA_HOME%\logs\stderr.log"
 
注意,从 tomcat.exe -install开始的是最后一行!不要手工回车换行把这一行分成了好几段。保存后在命令行下执行这个bat文件,注意执行的时候将“服务”窗口关闭。
分享到:
评论
1 楼 wwb1942 2010-11-25  
楼主,如果我也是按您写的配置的,但还是报内存溢出怎么办?我调过好几遍~~,我用的aix的系统,上面已经有一个websphere了,我想问一下,到底是什么原因只是tomcat的内存配置没有生效?

相关推荐

    TOMCAT内存溢出之解决方法

    本文将详细介绍Tomcat内存溢出之解决方法,包括问题分析、解决方法和结论。 问题分析: Tomcat内存溢出是由于JVM的虚拟内存默认为128M,当超过这个值时就把先前占用的内存释放,而导致出现HTTP500的错误。当用户...

    解决tomcat内存溢出的配置方法

    本篇将详细介绍如何解决Tomcat内存溢出的问题,以及如何进行相应的配置优化。 首先,我们需要理解什么是内存溢出。当一个程序在运行过程中,分配给它的内存不足以存储所有数据时,就会发生内存溢出。在Java环境中,...

    LINUX部署tomcat内存溢出解决方案.txt

    LINUX部署tomcat内存溢出解决方案 已经使用过了,确实是好用的。

    tomcat内存溢出解决方案

    项目在tomcat下运行时,出现常见的几种内存溢出的解决方案

    java excel导出tomcat内存溢出处理方法

    ### Java Excel导出Tomcat内存溢出处理方法 在Java应用开发过程中,特别是在进行大量数据处理如Excel导出等操作时,经常会遇到Tomcat服务器内存溢出的问题。内存溢出是指程序运行时申请的内存超过了系统能提供的...

    eclipse tomcat启动,内存溢出问题

    ### Eclipse Tomcat 启动时出现内存溢出问题解析及解决方法 #### 一、问题背景与概述 在使用Eclipse集成开发环境部署并运行基于Tomcat的应用程序时,经常会出现“java.lang.OutOfMemoryError: Java heap space”这...

    Eclipse + Tomcat 内存溢出参数设置

    ### Eclipse + Tomcat 内存溢出参数设置详解 在Java开发过程中,特别是在使用Eclipse作为集成开发环境(IDE)并结合...通过以上步骤,可以有效地解决Eclipse和Tomcat中的内存溢出问题,提高系统的稳定性和响应速度。

    tomcat内存溢出问题.doc

    标题中的“tomcat内存溢出问题.doc”表明讨论的主题是关于Tomcat服务器遇到的内存溢出(Out Of Memory,OOM)问题,特别是与Java的PermGen空间相关的内存溢出。描述提到,这个问题是因为Tomcat的初始内存设置过小,...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    ### Eclipse Memory Analyzer (MAT) 分析 Tomcat 内存溢出详解 ...综上所述,正确使用 MAT 分析工具不仅能够帮助我们解决问题,还能提高开发效率和代码质量。希望本文对面临类似问题的开发者有所帮助。

    tomcat内存溢出在不同系统上各种详细的解决方案

    因此,了解并掌握如何解决Tomcat内存溢出问题对于确保应用程序的稳定运行至关重要。 #### 二、Tomcat内存溢出的三种常见类型及其原因 根据文档内容,Tomcat内存溢出大致可以分为以下三种情况: 1. **...

    JVM内存溢出问题解析

    JVM 内存溢出问题解析 JVM 内存溢出是指程序运行所需的内存大于虚拟机能提供的最大内存的情况。这种情况可能是由于数据量过大、死循环、静态变量和静态方法过多、递归、无法确定是否被引用的对象等原因引起的。同时...

    tomcat内存溢出

    tomcat内存溢出,里面列出集中导出内存溢出的愿意和解决方案。

    数据库更新工具+tomcat内存溢出解决办法+birt

    【Tomcat内存溢出解决办法】 Tomcat是Apache软件基金会的一个开源项目,作为一个流行的Java Servlet容器,它常用于部署和运行Java Web应用程序。内存溢出问题(Out of Memory Error,OOME)在高负载或长时间运行的...

    使用MAT分析Tomcat内存溢出

    在生产环境中,持续监控Tomcat的内存使用情况,设置合理的JVM内存参数,并定期进行内存分析,以便尽早发现和解决问题。 通过以上步骤,我们可以利用MAT有效地诊断和解决Tomcat的内存溢出问题。理解MAT的使用方法...

    myeclipse-tomcat jdk内存溢出

    ### MyEclipse-Tomcat JDK 内存溢出问题及解决方案 #### 一、问题概述 在使用MyEclipse进行Java Web开发时,经常会遇到Tomcat服务器启动后出现JVM内存溢出的问题。这种情况通常表现为应用程序运行过程中突然崩溃,...

Global site tag (gtag.js) - Google Analytics