JDK1.6中已经去除了-XX:+HeapDumpOnCtrlBreak,不能生成
6) 在OutOfMemory错误时执行Heap Dump
AIX平台:
在AIX平台下可以不用设置参数,默认会自动生成javacore(由outofmemory引起的)文件。默认生成在$DOMAIN_HOME下
生成javacore及heapdump并指定core文件的生成位置,则使用下面的参数:
-Xdump:heap:file=$DOMAIN_HOME/logs/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd
-Xdump:java:defaults:file=$DOMAIN_HOME/logs/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt
HP和Linux平台:
-XX:+HeapDumpOnOutOfMemoryError 指定core文件的位置,使用下面的参数:
-XX:HeapDumpPath=$DOMAIN_HOME/logs/heapdump.$$.hprof
7) JVM Crash指定hs_err_pid文件生成位置
HP和Linux平台:
-XX:ErrorFile=$DOMAIN_HOME/logs/hs_err_pid$$.log
8) 其他GC参数设置
AIX平台:
不支持年老代CMS GC参数,可设置下面的参数: 方法一:
-Xloainitial0.3 -Xloaminimum0.3
说明:年老代分为SOA和LOA,LOA是存放大对象的区域,当SOA用完后会触发fullgc。如此设置配合USER_MEM_ARGS=\–Xmx5g –Xmn1024m\参数,可最大程度保证在剩1G内存左右时进行full gc。
方法二(此方法在一些环境下不一定生效): -Xconcurrentslack1G 说明:没有内存申请时很长时间才会发起一次gc,当有内存申请且年轻代内存不够分配时会发起gc,将年轻代的对象转移到年老代,当总的堆内存在某一次分配请求之后小于-Xconcurrentslack1G参数设置的值时进行年老代的Concurrent gc
HP平台:
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=60 -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:MaxTenuringThreshold=18 -XX:SurvivorRatio=8
-XX:ParallelGCThreads=操作系统的CPU核数(或缺省为8) -XX:+UseGetTimeOfDay
Linux平台:
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=60 -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:MaxTenuringThreshold=18 -XX:SurvivorRatio=8
-XX:ParallelGCThreads=操作系统的CPU核数(或缺省为8)
说明:
-XX:+UseConcMarkSweepGC使用CMS内存收集
-XX:CMSInitiatingOccupancyFraction=60 CMS堆上,使用60%后开始CMS收集。 -XX:+UseParNewGC允许多线程收集新生代 -XX:+CMSParallelRemarkEnabled降低标记停顿
-XX:+UseCMSCompactAtFullCollection表示执行Full GC后对内存进行整理压缩,免得产生内存碎片
-XX:CMSFullGCsBeforeCompaction=0 表示执行N次Full GC后执行内存压缩。
9) VisualVM使用的启动参数
VisualVM提供在Java虚拟机(Java Virutal Machine, JVM)上运行的Java应用程序的详细信息。在VisualVM的图形用户界面中,您可以方便、快捷地查看多个Java应用程序的相关信息。(摘自官方说明)
-Dcom.sun.management.jmxremote.port=<7441-7449>-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false 在增加此参数后,启动weblogic可能会报以下错误
10) 线程池
在startWebLogic.sh脚本文件中的JAVA_OPTIONS环境变量中加入如下选项: -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000
11) Linux urandom设置
可以在startWebLogic.sh脚本文件中的JAVA_OPTIONS环境变量中加入如下选项: -Djava.security.egd=file:/dev/./urandom
也可以修改$JAVA_HOME/jre/lib/security/java.security文件 securerandom.source=file:/dev/urandom 改为
securerandom.source=file:/dev/./urandom
12) 最终Java虚拟机设置选项
修改startWebLogic.sh文件,在startWebLogic.sh文件中
DOMAIN_HOME=\与. ${DOMAIN_HOME}/bin/setDomainEnv.sh $*之间设置:
AIX平台:
JAVA_OPTIONS=\-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xverbosegclog:$DOMAIN_HOME/logs/gc.$$.log
-Xdump:heap:file=$DOMAIN_HOME/logs/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd
-Xdump:java:defaults:file=$DOMAIN_HOME/logs/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt -Xdisableexplicitgc -Xgcpolicy:gencon -Xloainitial0.3 -Xloaminimum0.3
-Djava.awt.headless=true-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000
-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder\
HP-UX平台:
JAVA_OPTIONS=\-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
-Xverbosegc:file=$DOMAIN_HOME/logs/gc.$$.log
-XX:HeapDumpPath=$DOMAIN_HOME/logs/heapdump.$$.hprof -XX:ErrorFile=$DOMAIN_HOME/logs/hs_err_pid$$.log
-XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=60 -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=18 -XX:SurvivorRatio=8
-XX:ParallelGCThreads=16 -XX:+HeapDumpOnOutOfMemoryError
-XX:+HeapDumpOnCtrlBreak-Djava.awt.headless=true-XX:+UseGetTimeOfDay -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000
-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder\ Linux平台:
JAVA_OPTIONS=\-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
-Xloggc:$DOMAIN_HOME/logs/gc.$$.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
-XX:HeapDumpPath=$DOMAIN_HOME/logs/heapdump.$$.hprof -XX:ErrorFile=$DOMAIN_HOME/logs/hs_err_pid$$.log
-XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=60 -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=18 -XX:SurvivorRatio=8
-XX:ParallelGCThreads=16 -XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/./urandom
-Djava.awt.headless=true-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000
-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder \
2.6. 修改参数存放的统一位置 1) JVM参数设置
以上所说的日志重定向参数、内存大小、及JAVA_OPTIONS参数可以在startWebLogic.sh或setDomainEnv.sh文件中修改。为了管理方便、易于维护的需求,统一规定在startWebLogic.sh中修改,修改位置如下所示(注意位置要在DOMAIN_HOME=\与 . ${DOMAIN_HOME}/bin/setDomainEnv.sh $*之间):
? 如果只有一个管理服务器
AIX平台: #umask 037 # Call setDomainEnv here. DOMAIN_HOME=\ if [ \ SERVER_NAME=\fi umask 022 #默认设置 AdminServer使用默认设置 LOG_PATH=\$DOMAIN_HOME/logs\WLS_REDIRECT_LOG=\USER_MEM_ARGS=\-Xms5120m -Xmx5120m -Xmn1536m\