`
张洪财
  • 浏览: 278170 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat的启动时初始内存和最大内存就需要向JVM

阅读更多

大家都知道,JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做垃圾回收的动作,释放被占用的一些内存。


      想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过中-Xms(初始值) -Xmx(最大值)-Xmn(最小值)来调整应用程序的初始内存和最大内存,一般情况下,将XmsXmx两个值设置大小为一样的,这样可以避免再程序运行完毕内存GC时还需要重新调整内存,提高效率。如:java -Xms64m -Xmx128m a.jar.
tomcat的启动程序是包装过的,不能直接使用java -X..... tomcat.*来改变内存的设置。在Tomcat在改变这个设置


有两种方法:


1.
就需要在环境变量中加上TOMCAT_OPTS, CATALINA_OPTS两个属性,
SET CATALINA_OPTS= -Xms64m -Xmx512m;
ms
是最小的,mx是最大,64m, 512m分别是指内存的容量.

2.
修改Catalina.bat文件


linux操作系统:

/usr/local/apache-tomcat-5.5.23/bin目录下的catalina.sh

添加:JAVA_OPTS='-Xms1024m -Xmx1024m'

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

windows NT操作系统:

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服务,设置生效

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2009-09-27 09:15

//首先检查程序有没有限入死循环

这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆栈设置太小的原因。
跟据网上的答案大致有这两种解决方法:
1
、设置环境变量
set JAVA_OPTS= -Xms32m -Xmx512m
可以根据自己机器的内存进行更改。

2
java -Xms32m -Xmx800m className
就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名)
这个解决问题了。而且执行的速度比没有设置的时候快很多。

如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse ->run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个参数就可以了。

后来在Eclilpse中修改了启动参数,在VM arguments 加入了-Xms32m -Xmx800m,问题解决。

一、java.lang.OutOfMemoryError: PermGen space

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

修改TOMCAT_HOME/bin/catalina.sh
“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

二、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选项设置为相同,而-Xmn1/4-Xmx值。
解决方法:手动设置Heap size
修改TOMCAT_HOME/bin/catalina.sh
“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m   -XX:MaxNewSize=256m"

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

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

(此图像是为了说明在MyEclipse中如何设置tomcat启动时的虚拟内存)

另:

这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个.

1.可以在windows 更改系统环境变量
加上JAVA_OPTS=-Xms64m -Xmx512m

2,如果用的tomcat,windows,可以在

C:\tomcat5.5.9\bin\catalina.bat? 中加上:

set JAVA_OPTS=-Xms64m -Xmx256m

位置在: rem Guess CATALINA_HOME if not defined? 这行的下面加合适.

3.如果是linux系统
Linux?
{tomcat_home}/bin/catalina.sh的前面,加
set JAVA_OPTS='-Xms64 -Xmx512'

 

分享到:
评论

相关推荐

    tomcat6.0 修改启动内存设置 java jvm参数配置

    ### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...

    设置Tomcat的初始启动内存

    Tomcat初始启动内存设置 在Java应用程序中,初始内存和最大内存的设置对程序的性能有着重要的影响。特别是在Tomcat服务器中,初始内存的设置可以影响服务器的性能和稳定性。然而,在Tomcat中设置初始内存并不是一件...

    Tomcat JVM内存设置方法

    在深入探讨如何设置Tomcat的JVM内存之前,我们需要先了解JVM内存的基本结构。JVM内存主要分为以下几个部分: 1. **堆内存(Heap Memory)**:这是JVM管理的主要内存区域之一,用于存储对象实例以及数组等数据。堆...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    在部署Java Web应用时,Tomcat作为常见的容器之一,其JVM内存设置同样至关重要。以下是在Tomcat环境中优化JVM内存的具体步骤: 1. **环境变量设置**:通过设置`CATALINA_OPTS`环境变量,可以在系统级别全局地调整...

    如何配置Tomcat的JVM虚拟机内存大小

    - `-Xms`:JVM初始化堆的大小,即虚拟机启动时向系统申请的初始内存大小。 - `-Xmx`:JVM堆的最大值,定义了虚拟机可以使用的最大内存空间。 合理设置这两个参数对于避免内存溢出和提高应用性能极为重要。通常,...

    Tomcat JVM的参数调优

    内存管理主要涉及JVM启动时分配给应用程序的初始内存和最大内存。这些设置可以通过`-Xms`和`-Xmx`命令行选项来调整。初始内存(`-Xms`)是JVM启动时分配的最小内存,而最大内存(`-Xmx`)则是JVM允许的最大内存使用...

    设置tomcat启动内存大小

    - **调整堆内存**:根据应用的实际负载和业务需求,合理设置初始堆内存(-Xms)和最大堆内存(-Xmx),避免频繁的垃圾回收和内存溢出问题。 - **考虑多代内存**:对于大型应用,可能需要更细致地调整新生代(-XX:...

    ECLIPSE,TOMCAT,JVM内存设置

    标题 "ECLIPSE,TOMCAT,JVM内存设置" 涉及到的是在开发Java Web应用程序时,如何配置Eclipse集成开发环境(IDE)、Apache Tomcat服务器以及Java虚拟机(JVM)的内存参数,以优化性能和避免内存溢出等问题。...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及...综上所述,解决Tomcat的乱码问题需要正确配置字符编码,而处理JVM内存溢出则需优化内存分配和垃圾收集策略。对于MySQL的配置,理解`my.cnf`文件的内容对于数据库的高效运行也至关重要。

    JBOSS\Tomcat最大连接数配置和jvm内存配置.docx

    【JBOSSTomcat最大连接数配置和JVM内存配置】 在JBOSSTomcat服务器的性能优化中,最大连接数配置和JVM内存配置是两个至关重要的环节,它们直接影响到服务器的响应速度和稳定性,尤其对于处理大量并发请求的场景。 ...

    eclipse tomcat启动,内存溢出问题

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

    如何设置Tomcat的JVM虚拟机内存大小

    初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要。 在 Windows 下,可以在文件 /...

    tomcat jvm内存修改

    ### Tomcat JVM 内存调整方法与原理 #### 一、背景介绍 在日常的运维工作中,经常会遇到 Tomcat 应用服务器出现内存溢出的问题,表现为 `java.lang.OutOfMemoryError` 异常。这类问题通常是由于 JVM(Java 虚拟机...

    修改tomcat内存大小.txt

    在调整Tomcat内存之前,首先需要了解几个重要的JVM内存参数: 1. **-Xms**:表示JVM启动时初始分配的堆内存大小。例如`-Xms800m`表示JVM启动时初始分配的堆内存为800MB。 2. **-Xmx**:表示JVM运行过程中最大可用...

    tomcat的jvm内存.txt

    根据提供的文件信息,“tomcat的jvm内存.txt”,我们可以推断出这份文档主要涉及Tomcat服务器在启动时如何配置JVM(Java虚拟机)的内存参数。以下是对这些配置选项的详细解释,以及它们对Tomcat性能的影响。 ### ...

    Tomcat JVM内存优化(Linux环境)

    ### Tomcat JVM内存优化(Linux环境) 在Linux环境下运行Tomcat服务器时,经常会遇到与Java虚拟机(JVM)相关的内存溢出问题。这些问题通常表现为`java.lang.OutOfMemoryError`异常,具体又分为两类:`PermGen ...

Global site tag (gtag.js) - Google Analytics