190 likes | 356 Views
J2SE 1.5 : Memory Heap and Garbage Collector. Objectives. You will be able to understand the JVM Memory Heap You will be able to know what the Garbage Collector do You will be able to understand the impact of GC on J2EE application performance. JVM Object Garbage Collection.
E N D
Objectives • You will be able to understand the JVM Memory Heap • You will be able to know what the Garbage Collector do • You will be able to understand the impact of GC on J2EE application performance
JVM Object Garbage Collection • GC shields the developer from the complexity of memory allocation and garbage collection • GC is one of the principal bottleneck of J2EE applications • OutOfMemoryExceptions • Memory Leak
Generations If the garbage collector has become a bottleneck, you may wish to customize the generation sizes. Check the verbose garbage collector output, and then explore the sensitivity of your individual performance metric to the garbage collector parameters.
Throughput Collector • The Throughput Collector is selected by the default if the JVM is runinng in server mode • Can be enabled using the command line flag -XX:+UseParallelGC
Performance Consideration • Throughput: percentage of total time not spent in garbage collection • Pauses: the times when an application appears unresponsive because garbage collection is occurring
Measurement: Command Line • -verbose:gc • -XX:PrintGCDetails • -XX:PrintGCTimeStamp • -XX:+PrintTenuringDistribution • -XX:PrintHeapAtGC • -Xloggc:<filename>
Sizing the Generations • -Xms<size> • -Xmx<size> • -XX:NewSize=<size> • -XX:MaxNewSize=<size> • -XX:MaxPermSize=<size> • -XX:+UseTLAB • -XX:MaxTenuredThreshhold=32
Sizing the Generations JAVA_OPTS=$JAVA_OPTS -Xms1200m –Xmx1200m –XX:NewSize=400M –XX:MaxNewSize=400M –XX:SurvivorRatio=32 –XX:+UseTLAB –XX:TLABSize=64K