tomcat catalina.sh JAVA_OPTS参数说明与配置

牛人写JVM的博客:

http://blog.csdn.net/java2000_wl/article/category/1249100

http://blog.csdn.net/cutesource/article/details/5904501

有几个链接:

 

http://www.cnblogs.com/fantiantian/p/3623740.html   查看tomcat启动文件都干点啥catalina.bat

 

http://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html  Tomcat的JVM设置和连接数设置
http://blog.chinaunix.net/uid-26602509-id-4110244.html  内存溢出之Tomcat内存配置-catalina.sh or catalina.bat

http://www.wangmeng.net.cn/?p=53  tomcat内存溢出(修改catalina.bat后windows启动tomcat服务没有效果)

http://blog.csdn.net/sun8288/article/details/8161813   Windows下Tomcat服务的JVM设置相关

 

最近手头的项目报内存溢出错误,内存溢出(Out Of Memofy)简称为传说中的OOM。^_^ 网上找资料学习了下JAVA_OPTS参数和配置,应用到生产环境,没有再报错。

错误信息:Java.lang.OutOfMemoryError: Java heap space

测试环境:RHEL5.4_x64

jdk-6u20-linux-x64.bin

apache-tomcat-6.0.20

 

生产环境:Windows Server 2008 Enterprise Edition

jdk-6u21-windows-x64

apache-tomcat-6.0.29

Linux修改catalina.sh文件

JAVA_OPTS=”-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -verbose:gc -Xloggc:${CATALINA_HOME}/logs/gc.log`date +%Y-%m-%d-%H-%M` -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -noclassgc”

 

Windows修改catalina.bat文件

set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

 

 

Total memory:java虚拟机正在使用的已经从系统那里挖到的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存。如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,直 到挖到maxMemory()为止,所以totalMemory()是慢慢增大的。如果用了-Xms参数,程序在启动的时候就会无条件的从操作系统中挖 -Xms后面定义的内存数,然后在这些内存用的差不多的时候,再去挖。

Max memory:java虚拟机能够从操作系统那里挖到最大内存大小,如果在运行java程序的时候,没有添加-Xmx参数,那么默认就是64兆,这是java虚拟机默认情况下能 从操作系统那里挖到的最大的内存。如果添加了-Xmx参数,将以这个参数后面的值为准,建议设为内存的一半。

Free memory:刚才讲到如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,这些挖过来而又没有用上的内存,实际上就是 freeMemory,所以freeMemory的值一般情况下都是很小的,但是如果你在运行java程序的时候使用了-Xms,这个时候因为程序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory可能会有些大。

 

JVM内存设置方法:

Linux系统直接编辑TOMCAT_HOME/bin/catalina.sh文件,如上文件所示,不再多说。

1、Windows系统下,安装版的tomcat可以启动”Configure Tomcat”——”Java”选项配置,如下图所示:

 

 

另外安装JDK的时候若操作系统是64位的,安装的JDK也必须是64位,不然没法启动。Tomcat安装时指定JDK_HOME路径就行了。如下图所示:

 

 

2、绿色版本的tomcat, 直接修改catalina.bat文件,和linux系统不一样,windows系统下环境变量的设定以set命令开头,linux系统的shell运行时是会export环境变量的。

set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

参数说明:

-server:一定要作为第一个参数,在多个CPU时性能佳

-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些

-Xmx:java heap最大值,使用的最大内存

-XX:PermSize:设定内存的永久保存区域

-XX:MaxPermSize:设定最大内存的永久保存区域

-XX:MaxNewSize:

+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。

-Xss:每个线程的Stack大小

-verbose:gc 现实垃圾收集信息

-Xloggc:gc.log 指定垃圾收集日志文件

-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一

-XX:+UseParNewGC :缩短minor收集的时间

-XX:+UseConcMarkSweepGC :缩短major收集的时间

提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

 

tomcat 的jvm 内存溢出问题的解决

 

1、首先是: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

修改TOMCAT_HOME/bin/catalina.bat,在“echo ”Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:

set 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)那么就会产生此错误信息了。

 

解决方法:

手动设置MaxPermSize大小

修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在“echo ”Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

 

 

 

catalina.sh加set JAVA_OPTS='-Xms64 -Xmx512'无效解决方案

 

 

set JAVA_OPTS='-Xms64 -Xmx512'
上面无效的话这样写:
declare -x JAVA_OPTS="-Xms128m -Xmx256"
"declare -x"一定要加,不然就会报-x指令无效,
还有后面的引号也要注意加上 wq后,重启tomcat即可,ps ax后看到tomcat的进程会变成类似
/opt/jdk1.6.0/bin/java -Xms128m -Xmx256m -Djava.endorsed.dirs=/opt/tomcat/common/e

在windows下,如果使用控制台的方式,也就是直接执行startup.bat方式启动,可以通过修改catalina.bat
set JAVA_OPTS=-Xms256m -Xmx512m
注意,linux下有单引号,win下不用,如果加上单引号,tomcat根本起不来。

 

 

http://blog.csdn.net/sfdev/article/details/2062042

http://blog.csdn.net/lideguo1979/article/details/7561670

posted @   silentmuh  阅读(2434)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
Live2D
欢迎阅读『tomcat catalina.sh JAVA_OPTS参数说明与配置』
  1. 1 Walk Thru Fire Vicetone
  2. 2 爱你 王心凌
  3. 3 Inspire Capo Productions - Serenity
  4. 4 Welcome Home Radical Face
  5. 5 粉红色的回忆 李玲玉
Welcome Home - Radical Face
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : Ben P. Cooper

作曲 : Cooper

Sleep don't visit, so I choke on sun

And the days blur into one

And the backs of my eyes hum with things I've never done

Sheets are swaying from an old clothesline

Was never much but we've made the most

Welcome home

Ships are launching from my chest

Some have names but most do not

If you find one,please let me know what piece I've lost

Heal the scars from off my back

I don't need them anymore

You can throw them out or keep them in your mason jars

I've come home

All my nightmares escaped my head

Bar the door, please don't let them in

You were never supposed to leave

Now my head's splitting at the seams

And I don't know if I can

Here, beneath my lungs

I feel your thumbs press into my skin again

点击右上角即可分享
微信分享提示