`

tomcat JAVA启动参数 JAVA_OPTS OutOfMemoryError

阅读更多

$TOMCAT_HOME$/CATALINA.BAT第一行,增加

set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx900m -Duser.timezone=GMT+08

=================================================================================================================================

$JONAS_HOME/bin/unix/jonas 中:
export JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128M -DFF_HOME=$JONAS_ROOT/ffhome"'- Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'

http://jasli.itpub.net/post/15912/300322

=================================================================================================================================

The JAVA_OPTS environment variable can be used to specify additional arguments to the JVM JBoss will be run in. These can be set as regular environment variables on the platform, in the startup script (run.sh or run.bat, or (when using run.sh) in run.conf.

Some examples:

Memory settings
JAVA_OPTS="-server -Xms128m -Xmx512m"

JDK 1.3.1 JPDA settings
JAVA_OPTS="-classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

JDK 1.4.1 JPDA settings
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

Setting Jetty webserver port
JAVA_OPTS=-Djetty.port=80

-server

-Xms 00m

-Xmx 00m

-Xss 00k

+XX:AggressiveHeap

+XX:AggressiveHeap: 会使得 Xms 1220m没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 另外Xmx作为允许jvm使用的最大内存数量,不应该超过物理内存的90%。

Xss 00k :这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.

1.修改 JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss。现在的JAVA_OPTS为:
-Xms 520m -Xmx 900m -Xss 128k
2.修改deploy/jbossweb-tomcat55.sar/service.xml
将 maxThreads根据目前的访问量由默认的250降为75,并使用jboss 4默认未写在标准service.xml里面而jboss 3写入了的2个参数: maxSparseThreads=55,minSparseThreads=25
3.修改了oracle-ds.xml 将最大连接数有150降为50.
4.去掉了一些不用的服务。

=================================================================================================================================

Tomcat 的JVM 内存溢出问题的解决  好久没有遇到这个问题了,最近做的项目有些多,并且同时发布到一个Tomcat下,没多长时间可爱的Tomcat就会被撑死,试着改了几个参数,但是问题 依旧,可能是因为每个项目都是用的ssh架构,初始化内存占用太大,也可能是代码写的有问题,没有释放内存,明天用测试工具测试下。另外这种 WebServer搭建结构很不合理,服务也不健壮;一定要改一改。下班回家路上想将WebServer转移到一台空闲的PC Server上,使用Apache+N个Tomcat实例,将应用分散到几个Tomcat实例下,我想这样情况可能会好很多。

先看下面解 决问题的方法,没有尝试过,但是觉得很合理,明天到单位试一下。


【转】Tomcat 的JVM 内存溢出问题的解决
关 于内存溢出问题转帖,备查。
【转自】http://ahut9923.iteye.com/blog/236859

1、首先是: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选项设置为相同,而-Xmn为1/4的-Xmx值。

解决方法:

手动设置Heap size
修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
Java代码
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 

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

或修改catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
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)那么就会产生此错误信息了。

解决方法:

1. 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.bat(Linux下为 catalina.sh),在Java代码
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:   
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m 

“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

catalina.sh下为:
Java 代码
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"


另外看到了另外一个帖子,觉得挺好,摘抄如 下:
分析java.lang.OutOfMemoryError: PermGen space

发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出 。然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至干脆不用tomcat。还有人怀疑spring的问题,在spring论坛上讨论很激烈,因为spring在AOP时使用 CBLIB会动态产生很多类。

但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?tomcat在 Q&A很隐晦的回答了这一点,我们知道这个问题,但这个问题是由一个更基础的问题产生。

于是有人对更基础的JVM做了检查,发 现了问题的关键。原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就 固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!


对于以上两个问题,我的处理是:

在catalina.bat的第一行增加:
Java代码
set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 

set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

在 catalina.sh的第一行增加:
Java代码
JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

备注: http://www.jbsolutions.net.in/out_of_memory_issue.html

=================================================================================================================================

http://publib.boulder.ibm.com/wasce/V2.1.0/zh_CN/javaopts.html

JAVA_OPTS 环境变量

使用以下命令时,在执行该命令之前,可通过设置 JAVA_OPTS 环境变量将额外的选项传递给 Java 虚拟机。

deploy
geronimo
shutdown
startup
初始堆大小

要指定 Java 虚拟机的初始堆大小,请在启动服务器之前,将下列选项包含在 JAVA_OPTS 环境变量中:

-XmsIm
其中 I 由初始堆大小替换(单位:MB)。
最大堆大小

要指定 Java 虚拟机的最大堆大小,请在服务器启动之前,在 JAVA_OPTS 环境变量中包含以下选项:

-XmxMm
其中 M 由最大堆大小替换(单位:MB)。
以大页面分配堆

要指定以大页面分配堆,请在启动服务器之前,将下列选项包含在 JAVA_OPTS 环境变量中:

-Xlp
指定以大页面分配堆。
启用代理服务器

请考虑服务器由防火墙保护的情 况。服务器可能仍需要访问防火墙以外的站点,例如,使用管理控制台来访存并安装 JDBC 驱动程序。如果必须将服务器配置为使用代理服务器访问外部资源,请在启动服务器之前,将下列选项包含在 JAVA_OPTS 环境变量中:

-DproxySet=true
配置 Java 虚拟机以使用代理服务器。
-DproxyHost=host
其中 host 是运行代理服务器的主机。
-DproxyPort=port
其中 port 是代理服务器侦听的端口。
定 制日志记录

如果希望对服务器中的日志记录进行更精密的控制,那么您可以指定自己的日志记录设置,并在启动服务器之前在 JAVA_OPTS 环境变量中提供单独的 log4j.xml 文件。以下选项将覆盖 \var\log 目录下的 XYZ-log4j.properties 文件中定义的设置。

-Dorg.apache.geronimo.log4jservice.configuration=filename
其中,filename 必须是标准的文件名,它是相对于服务器实例目录位置的。

分享到:
评论

相关推荐

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

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

    java.lang.OutOfMemoryError: Java heap space 解决方法

    - 在Windows系统下,可以通过修改Tomcat的`C:\tomcat5.5.9\bin\catalina.bat`文件中的`JAVA_OPTS`变量来增加堆内存大小。示例命令如下: ``` set JAVA_OPTS=-Xms64m -Xmx512m ``` 这里将最小堆大小设为64MB,...

    Tomcat 7 Windows中以Service方式启动配置启动参数

    ### Tomcat 7 在Windows环境下以Service方式启动的配置与启动参数详解 #### 一、引言 在实际的企业级应用开发与部署过程中,Tomcat作为一款轻量级且功能强大的应用服务器,被广泛应用于Java Web项目的运行环境。...

    tomcat 出现 OutOfMemoryError 的解决方法

    针对 Tomcat 出现 `java.lang.OutOfMemoryError: PermGen space` 和 `java.lang.OutOfMemoryError: Java heap space` 的问题,通过调整 JVM 的内存配置以及优化应用本身,可以有效避免内存溢出的发生。同时,对于...

    java解决nested exception is java.lang.OutOfMemoryError Java heap space

    要确保在服务启动时正确设置了`JAVA_OPTS`,例如,`tomcat7以服务方式运行设置jvm options.png`可能就展示了这种设置。 8. **阅读文档**:参考文章如"CSDN博客"中的"内存溢出之Tomcat内存配置"或"Tomcat 7 Windows...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    ### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....

    tomcat_OutOfMemoreError处理方法

    针对`java.lang.OutOfMemoryError: PermGen space`,同样需要通过修改启动参数来增加永久代的大小。在`TOMCAT_HOME\bin\catalina.bat`或`TOMCAT_HOME/bin/catalina.sh`文件中,找到`echo "Using CATALINA_BASE: $...

    编译时出现java.lang.OutOfMemoryError Java heap space异常

    - **Linux系统Tomcat配置**:编辑`{tomcat_home}/bin/catalina.sh`文件,在前部添加`set JAVA_OPTS='-Xms64m -Xmx512m'`。 通过上述方法的综合运用,通常能够有效地解决`java.lang.OutOfMemoryError: Java heap ...

    Eclipse + Tomcat 内存溢出参数设置

    1. **修改Tomcat的启动脚本**:通过编辑`G:\apache-tomcat-6.0.37\bin\catalina.bat`文件,添加`set JAVA_OPTS=-Xms256m -Xmx512m`来指定Tomcat的初始堆内存为256MB,最大堆内存为512MB。 - **操作步骤**: 1. ...

    java.lang.OutOfMemoryError解决办法

    可以通过JVM的启动参数来设定,例如`-XX:PermSize`用来设置初始大小,`-XX:MaxPermSize`用来设置最大大小。在示例中,推荐的设置是`-XX:PermSize=64M -XX:MaxPermSize=128m`。另外,减少类的加载也是有效的策略,...

    设置jvm内存的方法

    本文将详细介绍如何为Java虚拟机(JVM)设置内存参数,以及在不同场景下进行有效配置的方法。 #### 二、JVM内存参数详解 1. **-Xms (Initial heap size)**: - **含义**: 设置JVM启动时的初始堆内存大小。 - **重要...

    Java heap space 解决方法

    **修改Tomcat启动脚本**:如果直接修改Tomcat的启动脚本,可以找到`C:\tomcat5.5.9\bin\catalina.bat`文件,并在其内部设置`JAVA_OPTS`,例如`set JAVA_OPTS=-Xms64m -Xmx256m`。需要注意的是,这段代码后面还有...

    增加tomcat内存

    - **OutOfMemoryError**:应用程序运行过程中如果消耗的内存超过Tomcat所分配的内存,会导致“OutOfMemoryError”错误,进而使得应用程序无法正常运行。 - **性能瓶颈**:如果应用程序频繁地进行垃圾回收操作,这将...

    小工具tomcat的

    根据给定的信息,本文将重点解析“Java堆内存溢出错误”(`java.lang.OutOfMemoryError: Java heap space`)及其与Tomcat服务器的关系,同时也会探讨如何诊断、理解和解决此类问题。 ### Java堆内存溢出错误简介 ...

    tomcat_eclipse配置内存溢出

    如果是在生产环境中部署应用程序而非通过IDE开发,则需要修改Tomcat的启动脚本。 - 对于Windows环境,打开 `%TOMCAT_HOME%/bin/catalina.bat` 文件,在文件开头添加如下内容: ``` set JAVA_OPTS=-server -Xms256...

    Tomcat6参数设置

    ### Tomcat6参数设置详解 #### 一、内存参数配置 Tomcat作为一款广泛使用的Java应用服务器和Web容器,其性能优化尤为重要。特别是在资源管理方面,合理地设置内存参数能够显著提升应用程序的运行效率和稳定性。 *...

    tomcat调优和java配置.doc

    总之,Tomcat和Java的调优涉及到多个方面,包括Java环境的配置、Tomcat启动参数的设置以及垃圾收集器的选择。通过不断的测试和调整,可以找到最适合应用的配置,从而提高服务器的稳定性和效率。

Global site tag (gtag.js) - Google Analytics