`
fackyou200
  • 浏览: 310754 次
  • 性别: Icon_minigender_1
  • 来自: 山西太原
社区版块
存档分类
最新评论

内存溢出之Tomcat内存配置-catalina.sh or catalina.bat

 
阅读更多

设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置

三、实例,以下给出1G内存环境下java jvm 的参数设置参考:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX: NewSize=192m -XX:MaxNewSize=384m"

CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m"

Linux:

在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh添加:

JAVA_OPTS='-Xms512m -Xmx1024m'要加“m”说明是MB,否则就是KB了,在启动tomcat时会 报内存不足。

-Xms:初始值-Xmx:最大值-Xmn:最小值

Windows

在catalina.bat最前面加入set JAVA_OPTS=-Xms128m -Xmx350m 

如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.

但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了..

windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.

解决办法:

修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions

原值为-Dcatalina.home="C:\ApacheGroup \Tomcat 5.0"-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"-Xrs加入 -Xms300m -Xmx350m 

重起tomcat服务,设置生效


 答案2Tomcat 的JVM 内存溢出问题的解决关键字: tomcat 的jvm 内存溢出问题的解决 


最近在熟悉一个开发了有几年的项目,需要把数据库从mysql移植到oracle,首 先把jdbc的连接指向mysql,打包放到tomcat里面,可以跑起来,没有问题,可是当把jdbc连接指向oracle的时候,tomcat就连续 抛java.lang.OutOfMemoryError的错误,上网google了一下,了解了一下tomcat的运行机制,也解决了问题,share 出来,以备查。 

1、 首先是:java.lang.OutOfMemoryError: Java heap space 解释: Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 

提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 

提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 

解决方法: 手动设置Heap size 修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: Java代码 set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 或修改catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 

2、其次是:java.lang.OutOfMemoryError: PermGen space 原因: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 

解决方法: 1. 手动设置MaxPermSize大小 修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码 “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m catalina.sh下为: Java代码 JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" 

另外看到了另外一个帖子,觉得挺好,摘抄如下: 

分析 java.lang.OutOfMemoryError: PermGen space 发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出 。然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至干脆不用tomcat。还有人怀疑spring的问题,在spring论坛上讨论很激烈,因为spring在AOP时使用 CBLIB会动态产生很多类。 但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?tomcat在Q&A很隐晦的回答了这一点,我们知道这个问题,但 这个问题是由一个更基础的问题产生。 于是有人对更基础的JVM做了检查,发现了问题的关键。原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就 固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!

 对于以上两个问题,我的处理是: 

在catalina.bat的第一行增加: 

Java代码 :set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m  

在catalina.sh的第一行增加: 

Java代码 :JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

分享到:
评论

相关推荐

    apache-tomcat-8.5.38.zip

    1. **bin**:这个目录包含启动和停止Tomcat的脚本,如`catalina.sh`(用于Unix/Linux系统)和`catalina.bat`(用于Windows系统)。还有其他实用工具脚本,如`startup.sh`和`shutdown.sh`,用于管理Tomcat服务。 2. ...

    apache-tomcat-7.0.70.zip

    - 启动:通过运行bin目录下的startup.bat(Windows)或startup.sh(Unix/Linux)脚本来启动Tomcat服务器。 4. **配置Apache Tomcat** - 配置服务器:修改conf/server.xml文件以设置端口号、默认应用程序目录等。 ...

    966014500781557tomcat-7.0.75.zip

    4. **启动和停止**:通过bin目录下的`catalina.sh`(Unix/Linux)或`catalina.bat`(Windows)脚本来启动和停止Tomcat。 5. **Web应用部署**:将WAR文件放入webapps目录下,Tomcat会自动解压并部署;或者在`conf/...

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

    1. **调整JVM参数**:在Tomcat的启动脚本(如`catalina.sh`或`catalina.bat`)中,可以通过设置JVM的启动参数来控制内存大小。常用的是-Xms和-Xmx参数,分别代表初始堆内存和最大堆内存。例如,可以设置为`-Xms256m ...

    tomcat-6.0.26.zip

    3. **启动与停止**:通过`bin/startup.sh`(Unix/Linux)或`bin/startup.bat`(Windows)启动Tomcat,`bin/shutdown.sh`或`bin/shutdown.bat`停止服务。 4. **配置服务器**:修改`conf/server.xml`配置文件,设置...

    tomcat_eclipse配置内存溢出

    ### Tomcat与Eclipse配置内存溢出解决方案 #### 背景介绍 在进行Web应用程序开发过程中,尤其是在使用Tomcat服务器结合Eclipse或MyEclipse等集成开发环境(IDE)时,开发者可能会遇到一个常见的问题——内存溢出。...

    apache-tomcat-7.0.0-windows-x64.rar

    - **bin**:包含启动和停止Tomcat的脚本,如`catalina.bat`(批处理文件)和`startup.sh`(Unix/Linux shell脚本)。你可以通过运行这些脚本来启动和停止Tomcat服务。 - **conf**:存储服务器配置文件,如`...

    eclipse tomcat启动,内存溢出问题

    - 打开Tomcat安装目录下的`bin`文件夹,找到`catalina.bat`文件(Windows系统)或`catalina.sh`文件(Linux/Mac系统)。 - 在文件中添加或修改JVM参数以增加分配给JVM的内存大小。例如,可以将`JAVA_OPTS`设置为: ...

    Tomcat-启动参数设置

    然而,在高并发或大数据量处理的应用场景下,Tomcat可能会出现内存溢出等问题。为了提升Tomcat的稳定性和性能,合理地设置其启动参数变得尤为重要。 #### 二、内存参数设置 ##### 2.1 内存参数的作用 内存参数主要...

    tomcat如何扩大内存

    - 打开 Tomcat 的安装目录,通常会有一个 `bin` 文件夹,在该文件夹下会看到 `catalina.sh`(Unix/Linux)或 `catalina.bat`(Windows)文件。 2. **编辑配置文件**: - 使用文本编辑器打开 `catalina.sh` 或 `...

    tomcat内存溢出问题.doc

    在Tomcat中,我们可以通过修改`bin/catalina.sh`(对于Unix/Linux系统)或`bin/catalina.bat`(对于Windows系统)脚本来设置JVM的内存分配。我们需要增加以下两个参数: 1. `-XX:MaxPermSize=256m`:设置最大 Perm...

    设置tomcat启动内存大小

    1. **定位配置文件**:找到Tomcat安装目录下的`bin`目录,其中包含`catalina.sh`(Unix/Linux系统)或`catalina.bat`(Windows系统)脚本文件。 2. **编辑JAVA_OPTS变量**:在`catalina.sh`或`catalina.bat`文件中...

    超实用内存溢出解决方法

    通过调整Tomcat的内存配置,尤其是堆内存和PermGen/Metaspace空间的大小,可以有效缓解内存溢出问题。针对不同的启动方式,采取不同的配置策略至关重要。此外,合理设置GC相关参数也能显著提高系统的稳定性。在实践...

    设置jvm内存的方法

    不合适的内存配置不仅可能导致应用程序性能下降,还可能引发一系列的内存溢出错误,如`OutOfMemoryError`。本文将详细介绍如何为Java虚拟机(JVM)设置内存参数,以及在不同场景下进行有效配置的方法。 #### 二、JVM...

    TOMCAT内存大小调整

    在Tomcat以bat方式启动时,需要修改TOMCAT_HOME/bin/catalina.sh文件,加入以下行:`JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m`。如果Tomcat是注册成了Windows服务,以services方式启动的,则需要...

    tomcat启动不了问题处理

    此外,还需要检查Tomcat的配置文件(如`catalina.sh`或`catalina.bat`),确保正确地指定了JRE路径。 3. **配置文件错误** - Tomcat的启动依赖于一系列配置文件,包括`server.xml`、`web.xml`等。 - 解决方案:...

    windowx 下tomca配置

    在Windows环境下配置Tomcat涉及到多个步骤,包括安装和配置数据库、安装JDK、安装Tomcat以及调整Tomcat的配置文件以解决内存溢出问题。以下是对这些知识点的详细说明: 1. **安装数据库**: - 数据库在这里指的是...

    为tomcat设置内存

    3. **配置不当**:Tomcat默认的内存配置可能不足以支持某些特定的应用需求。 #### 三、Tomcat内存参数详解 为了更好地理解如何设置这些参数,我们首先来了解一下几个重要的内存参数及其含义。 1. **-Xms**:设置...

Global site tag (gtag.js) - Google Analytics