tomcat内存配置
来源:互联网 发布:windows禁止arp 编辑:程序博客网 时间:2024/06/05 08:15
1、tomcat内存溢出现象
在tomcat中会报如下三种错误:
1.OutOfMemoryError: Java heap space
2.OutOfMemoryError: PermGen space
3.OutOfMemoryError: unable to create new native thread.
2、解决方案
对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize)
最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。
针对前两种:
(1)在eclipse中启动的tomcat
双击Servers中该项目所在的tomcat-->在打开的tomcat配置界面中找到"General Information"选项卡-->点击“open launch configuration”超链接打开配置界面
-->选择Arguments选项卡
在VM arguments中在最上边打回车输入如下内容,保存重启tomcat即可
-Xms900m
-Xmx900m
-XX:MaxNewSize=500m
-XX:MaxPermSize=500m
(注:此为4G内存测试成功的参数,根据自己内存调整参数即可)
(2)通过tomcat直接启动
Windows服务器:
在catalina.bat最前面加入
set JAVA_OPTS=-Xms512m -Xmx800m- XX:MaxNewSize=500m -XX:MaxPermSize=500m
(注:4G的内存经测试900M启动正常,如果不加后两个参数可能会报PermGen space错误)
或者set CATALINA_OPTS=-Xmx300M -Xms256M
(区别是一个直接设置jvm内存,另一个设置tomcat内存,CATALINA_OPTS似乎可以与JAVA_OPTS不加区别的使用)
Linux服务器:
在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh
添加:JAVA_OPTS='-Xms512m -Xmx1024m'
或者 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
或者 CATALINA_OPTS="-server -Xms256m -Xmx300m"
3、说明:
原因分析:
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值。
没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。
-Xms:初始堆大小
-Xmx:最大堆大小
但堆的大小受下面三方面影响:
1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64位操作系统对内存无限制。)
2.系统的可用虚拟内存限制;
3.系统的可用物理内存限制。
堆的大小可以使用 java -Xmx***M version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。
参数说明:
-Xms<size>
设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。加“m”说明是MB,否则就是KB了。
例如:-Xms6400K,-Xms256M
-Xmx<size>
设置虚拟机的最大可用大小,缺省单位为字节。该值必须为1024整数倍,并且要大于2MB。可用k(K)或m(M)为单位来设置较大的内存数。缺省堆最大值为64MB。
例如:-Xmx81920K,-Xmx80M
当应用程序申请了大内存运行时虚拟机抛出java.lang.OutOfMemoryError: Java heap space错误,就需要使用-Xmx设置较大的可用内存堆。
PermSize/MaxPermSize:定义Perm段的尺寸,即永久保存区域的大小,PermSize为JVM启动时初始化Perm的内存大小;MaxPermSize为最大可占用的Perm内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
4、永久保存区域溢出
http://blog.sina.com.cn/s/blog_6840f82901013wk8.html
(本文为上述连接博文修改,简化)
- TOMCAT JVM 内存配置
- Tomcat 内存配置
- tomcat内存配置
- TOMCAT配置jvm内存
- tomcat配置内存
- tomcat内存配置
- 配置 tomcat 内存
- tomcat内存配置
- tomcat内存配置
- tomcat虚拟机内存配置
- tomcat内存溢出配置
- tomcat配置内存
- Tomcat 内存配置
- tomcat启动内存配置
- Tomcat 内存配置
- Tomcat内存配置
- tomcat内存配置优化
- TOMCAT内存优化配置
- Android.animation cts fail(3)
- struts1与spring的集成
- 数字电视的发展
- 如何编程创建Revit里面的视图过滤器对象
- C&C++文件操作
- tomcat内存配置
- 程序员生涯三部曲其一:编码阶段
- 排序算法-------2-路插入排序
- smarty、smarty格式化、smarty整数、smarty float、smarty各种转换方式、smarty日期转换等等
- mini2440 linux-3.7移植记录(三)
- PHP调试工具Xdebug安装配置教程
- rhel6系统启动过程故障排错处理
- soj 1763. 传球游戏
- 2012成长