tomcat JVM内存 配置

原文:http://elf8848.iteye.com/blog/467460

常见的内存溢出有以下两种:

java.lang.OutOfMemoryError: PermGen space

java.lang.OutOfMemoryError: Java heap space

一、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)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

二、java.lang.OutOfMemoryError: Java heap space
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

----------------------Linux下修改TomcatJVM内存大小----------------------

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.

# OS specific support.  $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false

----------------------windows下修改Tomcat JVM内存大小----------------------

情况一:解压版本的Tomcat , 要通过startup.bat启动tomcat才能加载配置

要添加在tomcat 的bin 下catalina.bat 里

rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%后面添加,红色的为新添加的.

set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true

情况二:安装版的Tomcat ,没有catalina.bat

安装版的Tomcat下没有catalina.bat
如果tomcat 6 注册成了windows服务,或者windows2003下用tomcat的安装版,
在/bin/tomcat6w.exe里修改就可以了 。

如果tomcat 5, 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服务,设置生效

---------------------------------------------------------
各参数的比例:
Xmx 与PermSize的和不可超过JVM可获得的总内存
PermSize不可大于Xmx
请参见其它的参数详解的文章,各参数值大小的本文不讨论.

时间: 2024-10-11 01:31:53

tomcat JVM内存 配置的相关文章

tomcat JVM内存配置

1,.Linux 找到 bin/catalina.sh 在位置cygwin=false前添加 export JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"cygwin=false 2.Windows 在catalina.bat最前面加入set JAVA_OPTS=-Xms128m -Xmx350m 如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存. 但是如果不

JBOSS最大连接数配置和jvm内存配置

一.调整JBOSS最大连接数. 配置deploy/jboss-web.deployer/server.xml文件 . <Connector port="8080" address="0.0.0.0" maxThreads="1600" minSpareThreads="100" maxSpareThreads="250" emptySessionPath="false" enabl

JVM内存配置参数-XMX,-XMS,-XMN的例子

转载:http://www.nowcoder.com/questionTerminal/093bfa948d144ce3b0a68b938ae8b4ec 对于JVM内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 ,其最小内存值和Survivor区总大小分别是() 5120m,1024m 5120m,2048m 10240m,1024m 10240m,2048m D -Xms10240m 初始堆大小即最小内存值 XXSurviv

jvm内存配置参数

转载:http://blog.csdn.net/crazylzxlzx/article/details/52210061请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior区总大小分别是: a. 5120m,1024m b.5120m,2048m c.10240m,1024m d.10240m,2048m 答案是:d. 首先必须知道几个参数的含义: -Xmx :堆的最大值 -X

(转)Linux下tomcat JVM内存设置步骤

java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space --------------------------------------------------------- 这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理. 一.java.lang.OutOfMemoryError: PermGen space PermGen space的全称

tomcat jvm 内存调优 适用于 JDK 6 &amp; 7

参考:https://blog.csdn.net/m0_37327416/article/details/76185051 1.jvm内存管理机制: 1)堆(Heap)和非堆(Non-heap)内存 按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.""在JVM中堆之外的内存称为非堆内存(Non-heap memory)". 可以看出JVM主要管理两种类型的内存:堆和非堆.简单

JVM内存配置参数的含义

(以下对JVM内存参数的配置,可以对应到eclipse.ini文件中) 先来看看参数的配置项内容: -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 其中-vmargs指的是设置JVM参数,后面的参数就是JVM参数项.接下来我们结合JVM内存管理机制来对各参数进行解析: 1.堆(Heap)和非堆(Non-heap)内存 按照官方说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均在此分配.堆是

JVM内存配置详解(转)

前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的OOM了!问题虽然蹊跷,但也趁此机会再次对JVM堆模型.GC垃圾算法等进行了一次系统梳理: 基本概念 堆/Heap JVM管理的内存叫堆:在32Bit操作系统上有4G的限制,一般来说Windows下为2G,而Linux 下为3G:64Bit的就没有这个限制. JVM初始分配的内存由-Xms指定,默认是

tomcat的内存配置,关于-Xms -Xmx -XX:PermSize -XX:MaxPermSize的理解和区别

JVM按照其存储数据的内容将所需内存分配为堆区与非堆区两个部分:所谓堆区即为通过new的方式创建的对象(类实例)所占用的内存空间:非堆区即为代码.常量.外部访问(如文件访问流所占资源)等.然而虽然java的垃圾回收机制虽然能够很好的解决内存浪费的问题,但是这种机制也仅仅的是回收堆区的资源,而对于非堆区的资源就束手无策了,针对这样的资源回收只能凭借开发人员自身的约束来解决(堆区有java回收机制.非堆区需要开发人员能够很好的解决). -Xms256m -Xmx256m -XX:PermSize=6