6.3 The large object area

In order to help reduce heap fragmentation, the IBM GC policies have segmented the tenure space into two additional spaces. The large object area (LOA) is an area of the tenure spaced used solely to satisfy allocations for large objects that cannot be satisfied in the main area of the heap, or the small object area (SOA). A large object is considered to be any object 64 KB or greater in size. Tuning the large object area will not necessarily yield better performance outright; however, it may help reduce heap fragmentation, which can affect garbage collection execution time.

 

 

How JVM uses the LOA

All object allocations are first attempted in the SOA. If this is not possible and the object size is greater than or equal to 64 KB, then allocation is retried in the LOA. The LOA expands or shrinks according to the algorithm specified in the Java Diagnostics Guide. If the LOA is not used after a few collections, it is shrunk down to nothing. For the Generational Concurrent GC policy, the default initial size of the LOA is 5% of the current tenure area. The default maximum size is 50% of the current tenure area.

Because the LOA is sized dynamically, it is usually not necessary to change the default settings. But an application that utilizes many large object may require sizing of the large object area.

Note: The LOA is allocated for all GC policies except subpool.