`
cuker919
  • 浏览: 97708 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多

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

错误信息:Java.lang.OutOfMemoryError:Javaheapspace

测试环境:RHEL5.4_x64

jdk-6u20-linux-x64.bin

apache-tomcat-6.0.20

生产环境:WindowsServer2008EnterpriseEdition

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文件

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

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

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

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

JVM内存设置方法:

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

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

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

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

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

参数说明:

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

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

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

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

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

-XX:MaxNewSize:

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

-Xss:每个线程的Stack大小

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

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

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

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

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

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

tomcatjvm内存溢出问题的解决

1、首先是:java.lang.OutOfMemoryError:Javaheapspace

解释:

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heapsize的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn-Xms-Xmx等选项可进行设置。Heapsize的大小是YoungGeneration和TenuredGeneraion之和。

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

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

解决方法:

手动设置Heapsize

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

setJAVA_OPTS=%JAVA_OPTS%-server-Xms800m-Xmx800m-XX:MaxNewSize=256m

2、其次是:java.lang.OutOfMemoryError:PermGenspace

原因:

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

解决方法:

手动设置MaxPermSize大小

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

setJAVA_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


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根本起不来。

分享到:
评论

相关推荐

    在tomcat的catalina.sh文件中添加了jconsole检测内存配置

    标题中的“在tomcat的catalina.sh文件中添加了jconsole检测内存配置”涉及到的是Java应用程序服务器Tomcat的配置以及使用JConsole进行性能监控的知识点。Tomcat是Apache软件基金会的一个开源项目,广泛用于部署Java ...

    tomcat 下catalina.out 日志乱码问题处理

    针对这个问题,给出的解决方案是在Tomcat的启动脚本`bin/catalina.sh`中添加以下配置: ```bash JAVA_OPTS="-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" ``` 这里的`JAVA_OPTS`环境变量用于设置Java虚拟机...

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

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

    java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

    - 对于Tomcat等应用服务器,可以在`catalina.bat`(Windows环境)或`catalina.sh`(Unix/Linux环境)文件中设置`JAVA_OPTS`环境变量来控制JVM的堆内存大小。 2. **优化代码逻辑**: - 减少不必要的对象创建,特别...

    优化Tomcat配置(内存、并发、缓存等方面)方法详解

    Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -...

    cronolog-1.6.2.tar.gz+catalina.sh

    nohup $JAVA_OPTS -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties -Djava.awt.headless=true -classpath $CLASSPATH -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -D...

    tomcat 8.5.100

    - **启动与停止**:通过运行`bin/startup.sh`(Unix/Linux)或`bin/startup.bat`(Windows)来启动Tomcat,使用`shutdown.sh`或`shutdown.bat`来停止服务。 3. **配置文件**: - **server.xml**:这是Tomcat的...

    class加密保护支持tomcat下web应用加密

    Hello 为java .class文件 windows java -agentlib:c:\jvm\deClass Hello deClass就是deClass.dll,注意不需要加.dll tomcat 修改tomcat的bin目录下catalina.bat ...修改catalina.sh JAVA_OPTS =-agentlib:declass

    setenv.sh for tomcat

    1. **设置JVM内存参数**:通过`setenv.sh`,你可以指定Java虚拟机(JVM)的初始堆大小(`JAVA_OPTS=-Xms<initial heap size>`)和最大堆大小(`JAVA_OPTS=-Xmx<maximum heap size>`),以确保Tomcat能有效地管理内存...

    tomcat_weblogic_jmx.txt

    保存并关闭 `catalina.sh` 文件后,使用新的环境变量配置启动 Tomcat。此时,Tomcat 将会监听指定的端口,并允许远程 JMX 连接。 #### 三、WebLogic JMX 开通步骤 **1. 修改环境变量** 与 Tomcat 类似,在 ...

    jmx监控tomcat测试包

    如果是linux版本,编辑TOMCAT_HOME/bin/catalina.sh,在开头加入下面几行: CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=11111 -Dcom.sun.management....

    apache-tomcat7.0.100windows和linux版本安全版本.zip

    5. **JVM内存设置**:根据应用需求,可能需要调整JVM的内存分配,这可以通过修改`bin/catalina.sh`或`bin/catalina.bat`中的`JAVA_OPTS`环境变量实现。 6. **HTTPS支持**:若需提供加密通信,可以在`server.xml`中...

    cronolog-catalina.out

    在实际配置中,你可能会在 `catalina.sh` 脚本中设置环境变量,如 `CATALINA_OPTS` 或 `JAVA_OPTS`,以包含 cronolog 的命令行参数。例如,你可以添加类似以下的行: ```bash CATALINA_OPTS="-J-Dorg.apache....

    AIX下安装JDK、tomcat

    Tomcat的配置需要在catalina.sh文件中添加JAVA_HOME和CATALINA_OPTS变量。JAVA_HOME是JDK的安装路径,而CATALINA_OPTS是通用的设置信息。例如:JAVA_HOME=/usr/java6_64;CATALINA_OPTS=-Xmx1024m。 四、启动...

    Ubantu tomocat启动报错 no opencv_java249 in java.library.path问题解决方案压缩包

    当启动Tomcat时,如果出现“no opencv_java249 in java.library.path”这样的错误,意味着系统无法找到OpenCV(开源计算机视觉库)的相关JNI(Java Native Interface)库。这个问题通常出现在使用OpenCV的Java项目中...

    tomcat常用功能的配置

    例如,在`catalina.bat`或`catalina.sh`中,可以通过设置`JAVA_OPTS`来调整JVM的内存大小: ```batch set JAVA_OPTS=-Xms256m -Xmx256m -XX:MaxPermSize=64m ``` 这些配置可以帮助优化Tomcat的性能和稳定性,确保...

    apache-tomcat-8.5.78.zip_tomcat

    4. **启动与停止**:Tomcat的启动和停止可以通过bin目录下的`catalina.sh`(Unix/Linux)或`catalina.bat`(Windows)脚本来完成。使用`startup.sh`或`startup.bat`启动Tomcat,`shutdown.sh`或`shutdown.bat`则用于...

    tomcat内存配置

    通过合理配置Tomcat的内存参数,可以有效提升应用的性能与稳定性。 ### Tomcat内存配置的重要性 在实际的应用场景中,由于不同的应用场景对资源的需求不同,因此合理设置Tomcat的内存参数至关重要。例如,在高并发...

    最新版linux apache-tomcat-9.0.53.tar.gz

    这些设置通常在`bin/catalina.sh`的`JAVA_OPTS`变量中定义。 Apache Tomcat 9.0.53版本带来了许多改进和新特性,包括对Java EE 8的支持、增强的安全性和性能优化。持续保持Tomcat的更新对于维持系统的安全性和稳定...

Global site tag (gtag.js) - Google Analytics