JDK-8133724 : Reconsider allocation of larger objects in PLABs
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2015-08-17
  • Updated: 2019-02-11
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Related Reports
Relates :  
Description
Currently G1 will allocate a new PLAB for rather large allocations (up to desired PLAB size - alignment_reserve). See PLABAllocator::allocate_direct_or_new_plab().

CMS allows the same, but objects within ]PLAB size - alignment reserve, PLAB size] fail allocation within a newly allocated PLAB (thus wasting up to ParallelGCBufferWastePct in the existing PLAB) and are directly promoted to old gen, and keeping the new PLAB.

Parallel GC only reallocates a new PLAB if the object is < half of PLAB size. This might be more efficient, as large objects almost completely fill up PLABs anyway, having a larger overhead than just direct allocation because the next allocation will most likely require an immediate PLAB reload.

Investigate the options a little bit more to see what's best.