Installation manual
Performance and Scalability Recommended JVM Tuning Set
Release Notes for Release 9.1 Service Pack 3 (9.1.30151.0) Page 13
©2010 Blackboard Inc. Proprietary and Confidential
Concurrent Mark Sweep Collector
With the certification of Java 6, Blackboard recommends using the Concurrent Mark Sweep
Collector (-XX:+UseConcMarkSweepGC) instead of the Parallel Collector
(-XX:+UseParallelGC).
Local Allocation Buffer (TLAB)
The –XX:+UseTLAB parameter forces the JVM to use thread-local object allocation. A Thread
Local Allocation Buffer (TLAB) is a region of Eden that is used for object allocation by a single
thread, which is faster than performing an atomic operation on a top pointer shared across
threads. Using a TLAB improves concurrency by reducing contention on the shared heap lock.
Administrators can specify TLAB initial size and disable the resizing through the -
XX:TLABSize=<size in kb> -XX:-ResizeTLAB parameter. The default setting of 256KB
provides adequate performance. Blackboard’s tests do not show increased performance when
changing the TLAB size from the default value 256KB to 128KB or to 512KB. To discover which
settings have a positive, negative, or neutral effect on performance, trace all TLAB operations,
using the -XX:+PrintTLAB parameter.
Survivor Spaces
The -XX:SurvivorRatio parameter controls the size of the two survivor spaces. If survivor
spaces are too small, the JVM will copy collection overflows directly into the old generation. If
survivor spaces are too large, they will be empty. At each garbage collection, the JVM determines
the number of times that an object can be copied before it is tenured, which is called the tenure
threshold (-XX:MaxTenuringThreshold). After experimenting with setting -
XX:SurvivorRatio to 4, 8, 16, and 4096 with -XX:MaxTenuringThreshold set to 0,
Blackboard’s tests have found that customers who use our heap setting recommendations can
improve Eden space memory management by changing the -XX:SurvivorRatio parameter to
4 or lower. Configurations that use JVM heap sizes larger than 8GB require different settings.
New Space Region
Use the -XX:NewSize and -XX:MaxNewSize parameters instead of the previously
recommended -XX:NewRatio parameter to determine the memory needs in the New Space
region of the JVM. During performance tests, the -XX:NewRatio parameter did not size and
resize the new generation space of the JVM correctly. Size the -XX:NewSize and -
XX:MaxNewSize parameters to roughly 1/4 or 1/3 the size of the JVM.