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 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 Generations 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. Garbage Collection Schemes 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 Throughput Collector 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> Measurement : -verbose:gc Measurement: -XX:PrintGCDetails Measurement: PrintHeapAtGC Measurement: visualgc Measurement: JConsole Sizing Generations 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