You are on page 1of 11

OOMOut of swap sapce

/Heap
JVM32Bit4GWindows2GLinux 3G64Bi
JVM-Xms1/641G
JVM-Xmx1/41G
40%JVM-Xmx -XX:MinHeapFreeRatio=
70%JVM-Xms -XX:MaxHeapFreeRatio=
-Xms-XmxGC

/
Java3YoungOldPermanent

Young(Nursery)
GC
Young4M1/15JVM
Young3 EdenSurvivor
-XX:NewRatio= YoungOld-server1:2young
-XX:SurvivorRatio= EdenSurvivor32Survivio

Old(Tenured)

-XX:MaxTenuringThreshold= CMS0GC

Permanent
Class64M -XX:MaxPermSiz

GC
collection

Minor CollectionGCyoung
Major CollectionYoungOldFull GCOld

GC
Survior spacesEden
GC

GC
(copying)(ThreadLocal

(mark-sweep)

(mark-sweep-compact)
GC
(Serial Collector)
-XX:+UseSerialGC
(Throughput Collector)
-XX:+UseParallelGCJDK5 -server
CPUCPU

2+CPU
-XX:MaxGCPauseMillis= -XX:GCTimeRatio GC
(Concurrent Low Pause Collector-CMS)
-XX:+UseConcMarkSweepGC

(Incremental Concurrent-Mark-Sweep/i-CMS)CMS
GC JVMA Collection of JVM Options

(Parallel)(Concurrent)

CPU

CPU
YoungGCGC

JDK5.0--Don't Pause
Tuning Garbage Collection with the 5.0 Java Virtual Machine

Sun HotSpot 1.4.1 JVM

Sun HotSpot 1.4.1Jvm

-Xms-Xmx

128M

java CXms128m

CXmx256m -XX:NewRatio

128m3 131/4

java CXms128m CXmx128m

CXX:NewRatio =3-XX:NewSize-XX:MaxNewsize

64m:

java CXms256m CXmx256m CXmn64m

4mjvmjvm

-XX:MaXPerSizeWebLogic Server

32m64m

java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m

HotSpotEden

NewRationSurvivorRationEden

java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2

HotSpot

edenMaxTenuring Threshold

java -XX:MaxTenuringThreshold=0 CXX:SurvivorRatio50000

-Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=64M -XX:MaxPermSize=128M -Xss256K -XX:


+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsB
eforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -X
X:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOc
cupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+P
rintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log

jdk1.4.2 JVMhttp://java.sun.com/j2se/1.4.2/docs/guide/vm/index.html
(for windows)http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.ht
stablehttp://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

http://blog.csdn.net/sfdev/archive/2008/01/23/2062042.aspx

-XXjvmSUN
Java HotSpot VM-XX:

Behavioral Optionsjvm
Performance Tuningjvm
Debugging Optionsjvmjvm

sunOS


-XX:-DisableExplicitGC System.gc()jvmgc
-XX:+MaxFDLimit
-XX:+ScavengeBeforeFullGC GCFull GC
-XX:+UseGCOverheadLimit OOMjvmGC
-XX:-UseConcMarkSweepGC GC
-XX:-UseParallelGC GC
-XX:-UseParallelOldGC Full GC-XX:-UseParallelGC
-XX:-UseSerialGC GC
-XX:+UseThreadPriorities

jvmGC
SerialGCjvmGCGC
ParallelGCGCGCapp
ConcMarkSweepGCGCGC


-XX:LargePageSizeInBytes=4m Java
-XX:MaxHeapFreeRatio=70 GCjava

-XX:MaxNewSize=size
-XX:MaxPermSize=64m
-XX:MinHeapFreeRatio=40 GCjava
-XX:NewRatio=2
-XX:NewSize=2.125m
-XX:ReservedCodeCacheSize=32m
-XX:ThreadStackSize=512 0
-XX:+UseLargePages


-XX:-CITime JIT
-XX:ErrorFile=./hs_err_pid<pid>.log
-XX:-ExtendedDTraceProbes solarisdtrace
-XX:HeapDumpPath=./java_pid<pid>.hprof
-XX:-HeapDumpOnOutOfMemoryError OOM
-XX:OnError="<cmd args>;<cmd args>" ERROR
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>" OOM
-XX:-PrintClassHistogram Ctrl-Breakjmap -histo
-XX:-PrintConcurrentLocks Ctrl-Breakjstack -l
-XX:-PrintCommandLineFlags
-XX:-PrintCompilation
-XX:-PrintGC GC
-XX:-PrintGC Details GC
-XX:-PrintGCTimeStamps GC
-XX:-TraceClassLoading
-XX:-TraceClassLoadingPreorder
-XX:-TraceClassResolution
-XX:-TraceClassUnloading
-XX:-TraceLoaderConstraints

-XX:+UseAdaptiveSizePolicySurvivor

-XX:MaxTenuringThreshold=00Survivor

-XX:MaxGCPauseMillis=100:JVM
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800
M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 XX:MaxTenuringThreshold=5 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:
CMSFullGCsBeforeCompaction=0 -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccu
pancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+Pri
ntGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log

JVM 32-bt64-bit
JVM
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550mJVM3550M

-Xms3550mJVM3550m-XmxJVM

-Xmn2g2G= + +

-Xss128kJDK5.01M256
java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPerm
Size=16m -XX:MaxTenuringThreshold=0

-XX:NewRatio=4:EdenSurvivor4

-XX:SurvivorRatio=4EdenSurvivor4Survivor
-XX:MaxPermSize=16m:16m

-XX:MaxTenuringThreshold=00Survivor

JVM

JVM
java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThread
s=20

-XX:+UseParallelGC

-XX:ParallelGCThreads=20
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThread
s=20 -XX:+UseParallelOldGC
-XX:+UseParallelOldGCJDK6.0
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis
=100

-XX:MaxGCPauseMillis=100:JVM
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis
=100 -XX:+UseAdaptiveSizePolicy

-XX:+UseAdaptiveSizePolicySurvivor

JVM
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMa
rkSweepGC -XX:+UseParNewGC

-XX:+UseConcMarkSweepGC-XX:NewRatio=4

-XX:+UseParNewGC:CMSJDK5.0JVM

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsB


eforeCompaction=5 -XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction
-XX:+UseCMSCompactAtFullCollection

JVM
-XX:+PrintGC

[GC 118250K->113543K(130112K), 0.0094143 secs]


[Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails

[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.01


24633 secs]
[GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(12102
4K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
-XX:+PrintGCTimeStamps -XX:+PrintGCPrintGCTimeStamps
11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]

-XX:+PrintGCApplicationConcurrentTime:
Application time: 0.5291524 seconds
-XX:+PrintGCApplicationStoppedTime
Total time for which application threads were stopped: 0.0468229 seconds
-XX:PrintHeapAtGC:GC

34.702: [GC {Heap before gc invocations=7:


def new generation total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d00
00)
eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)
from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000)
to space 6144K, 0% used [0x21bd0000, 0x21bd0000, 0x221d0000)
tenured generation total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd000
0)
the space 69632K, 3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)
compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)He
ap after gc invocations=8:
def new generation total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d000
0)
eden space 49152K, 0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)

from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)


to space 6144K, 0% used [0x221d0000, 0x221d0000, 0x227d0000)
tenured generation total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd000
0)
the space 69632K, 4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)
compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
}
, 0.0757599 secs]
-Xloggc:filename:
JVM

-Xms:
-Xmx:
-XX:NewSize=n:

-XX:NewRatio=n::313

-XX:SurvivorRatio=n:EdenSurvivorSurvivor3
-XX:MaxPermSize=n:

-XX:+UseSerialGC:
-XX:+UseParallelGC:
-XX:+UseParalledlOldGC:
-XX:+UseConcMarkSweepGC:

-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename

-XX:ParallelGCThreads=n:CPU
-XX:MaxGCPauseMillis=n:
-XX:GCTimeRatio=n:1/(1+n)

-XX:+CMSIncrementalMode:CPU

-XX:ParallelGCThreads=n:CPU

Gbit

GC

-XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction=0Full GC
1: heap size
a: -Xmx<n>
jvm heap , :-Xmx=2g
b: -Xms<n>

jvm heap , :-Xms=2g -Xmx


c: -Xmn<n>

jvm New Generation , :-Xmn256m


d: -XX:PermSize=<n>

jvm Perm Generation , :-XX:PermSize=32m


e: -XX:MaxPermSize=<n>
Perm Generation , :-XX:MaxPermSize=64m
f: -Xss<n>

C , :-Xss128k webx256K
g: -XX:NewRatio=<n>

jvm Old Generation heap size New Generation , CMS GC


h: -XX:SurvivorRatio=<n>

New Generation Eden Space Survivor Space heap size ,-XX:SurvivorRati


i: -XX:MinHeapFreeRatio=<n>

jvm heap n ,heap ,Xmx==Xms , :-XX:MinHe


j: -XX:MaxHeapFreeRatio=<n>

jvm heap n ,heap ,Xmx==Xms , :-XX:MaxHe


k: -XX:LargePageSizeInBytes=<n>
Java heap , :-XX:LargePageSizeInBytes=128m
2: garbage collector
a: -XX:+UseParallelGC

New Generation parallel collector, , app threads,


b: -XX:ParallelGCThreads=<n>
parallel collection thread , processor ,
c: -XX:+UseParallelOldGC
Old Generation parallel collector
d: -XX:+UseParNewGC

New Generation parallel collector, UseParallelGC gc ,


e: -XX:+CMSParallelRemarkEnabled
UseParNewGC , mark
f: -XX:+UseConcMarkSweepGC

Old Generation concurrent cmark sweep gc,gc thread app thread ( init
ad). app pause , , web server
g: -XX:+UseCMSCompactAtFullCollection

concurrent gc , memory fragmention, live object , memor


h: -XX:CMSInitiatingOccupancyFraction=<n>

old generation n% , concurrent collector, 68, :-X

bug, (1.5.09 and early) jvm , http://bugs.sun.com/bugdatabase/view_bu


i: -XX:+UseCMSInitiatingOccupancyOnly

old generation concurrent collector


3:others
a: -XX:MaxTenuringThreshold=<n>

object n young gc old generation , linux64 java6


b: -XX:+DisableExplicitGC

java full gc, System.gc() .


c: -XX:+UseFastAccessorMethods
get,set
d: -XX:+PrintGCDetails
:
[GC 15610.466: [ParNew: 229689K->20221K(235968K), 0.0194460 secs] 1159829K->9539
35K(2070976K), 0.0196420 secs]
e: -XX:+PrintGCTimeStamps
, :
[Times: user=0.09 sys=0.00, real=0.02 secs]
f: -XX:+PrintGCApplicationStoppedTime
, , :
Total time for which application threads were stopped: 0.0225920 seconds
4: a web server product sample and process
JAVA_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+Disab
leExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnab
led -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFas
tAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFr
action=70 "

UseParallelGC UseParallelOldGC,heap 3G,NewRatio 1.

CMS gc(-XX:+UseConcMarkSweepGC), heap 3g, 1.5g ,

New Generation 1400m, 2g jvm heap, ygc 60~7

New Generation 256m,young gc 2,3 , 25 ,C

CMS gc gc :gc heap . 1.5.0.09

64 , jboss log , ,
5:

web server , Parallel+CMS,UseParNewGC jdk6 -se

You might also like