引用
$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-OPTS参数设置 JAVA-OPTS 是一个变量,用于设置 JVM 相关运行参数。JVM 是 Java Virtual Machine 的缩写,表示 Java 虚拟机。JAVA-OPTS 变量的设置对 Java 应用程序的性能和稳定性具有重要影响。 在设置 JAVA-...
标题中的"java JAVA_OPTS javaagent"涉及到Java应用程序的启动参数设置,特别是`JAVA_OPTS`环境变量和`javaagent`选项,这两个是Java虚拟机(JVM)启动时的关键配置项。`JAVA_OPTS`通常用于传递额外的JVM参数,如...
### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...
分析这个脚本可以帮助我们理解Tomcat如何配置JVM、设置classpath、启动和停止服务等操作,这对于自定义Tomcat启动参数或者调试启动问题非常有用。 7. **编写批处理文件** 掌握批处理文件的编写技巧,可以创建...
apk反编译工具 直接运行bin目录中的jadx-gui.bat,选择apk文件即可 有些apk的体积比较大的时候,反编译的时候会卡住或者假死。 解决方案: 使用记事本或者notpad++打开jadx-gui.bat ...set DEFAULT_JVM_OPTS=-Xmx1024M
### Tomcat 启动参数设置详解 #### 一、背景介绍 在部署Java Web应用程序时,经常使用Apache Tomcat作为应用服务器。然而,在高并发或大数据量处理的应用场景下,Tomcat可能会出现内存溢出等问题。为了提升Tomcat的...
Java 环境配置与设置 JAVA_HOME, CLASSPATH, PATH 的目的 Java 环境配置是 Java 开发的基础,我们需要正确地配置 JAVA_HOME, CLASSPATH, PATH 等环境变量,以便正确地编译和运行 Java 程序。在本节中,我们将详细地...
当启动Tomcat时,如果出现“no opencv_java249 in java.library.path”这样的错误,意味着系统无法找到OpenCV(开源计算机视觉库)的相关JNI(Java Native Interface)库。这个问题通常出现在使用OpenCV的Java项目中...
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -...
标题“JAVA_SET_enviroment”暗示了我们讨论的主题与设置Java开发环境有关,特别是关于配置Java环境变量的步骤。在编程领域,尤其是Java开发中,正确地设置环境变量是至关重要的,因为它们指定了系统如何找到并执行...
在Windows环境中以Service方式启动Tomcat时,默认的JVM参数设置往往较低,这可能导致在运行大型应用程序时遇到内存不足的问题,例如常见的`java.lang.OutOfMemoryError: PermGen space`错误。为了避免这类问题的发生...
- 对于Tomcat等应用服务器,可以在`catalina.bat`(Windows环境)或`catalina.sh`(Unix/Linux环境)文件中设置`JAVA_OPTS`环境变量来控制JVM的堆内存大小。 2. **优化代码逻辑**: - 减少不必要的对象创建,特别...
"Java.lang.OutOfMemoryError: Java heap space 解决...Java.lang.OutOfMemoryError: Java heap space 是一种常见的 Java 错误,解决该问题需要从多方面入手,包括调整 JVM 的堆大小、调整 Tomcat 的配置、优化程序等。
如果Tomcat注册为Windows服务启动,则需要修改注册表中的`HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java`路径下的`JvmMs`和`JvmMx`项来设置最小和最大内存使用参数。...
jdk 环境变量 JAVA_HOME 批处理文件 双击搞定 最多只需修改个JAVA-HOME,其他的classpath path之类的bat文件搞定
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
针对 Tomcat 出现 `java.lang.OutOfMemoryError: PermGen space` 和 `java.lang.OutOfMemoryError: Java heap space` 的问题,通过调整 JVM 的内存配置以及优化应用本身,可以有效避免内存溢出的发生。同时,对于...
然而,在Tomcat中设置初始内存并不是一件简单的事情,因为Tomcat的启动程序是包装过的,不能直接使用java命令来调整内存的设置。因此,在本文中,我们将介绍如何设置Tomcat的初始启动内存,从而解决Out Of Memory的...
在Tomcat服务器中,可以通过修改`bin`目录下的`catalina.bat`脚本来调整Java虚拟机(JVM)的内存参数。具体操作如下: 1. **打开`catalina.bat`文件**:使用文本编辑器打开Tomcat安装目录下的`bin`文件夹中的`...