JDK-8030177 : G1: Enable TLAB resizing
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs24,hs25
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2013-12-16
  • Updated: 2016-03-01
  • Resolved: 2014-01-27
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.
JDK 8 JDK 9
8u20Fixed 9 b03Fixed
Related Reports
Duplicate :  
Duplicate :  
Description
Currently G1 does not resize TLABs. This reduces performance for G1 since it can lead to contention in the allocation path.

Performance test show 2-3% throughput improvement when resizing TLABs up to the humongous threshold.
Comments
noreg-hard motivation: I have a small Java program that has two threads. One allocates a lot and one allocates very little. I did JFR recordings and looked at the object_alloc_in_new_TLAB event to see the TLAB sizes. The fast allocator gets large TLABs and the slow allocator gets small TLABs after my change. I tried turning this in to a JTreg test. If I use JFR events to do verification I need access to the JFR parser. That means I have to put the test in among the JFR tests in the JDK. That seems like the wrong place to put a test for a Hotspot feature. I tried using the PrintTLAB flag instead and parse the output. But that output does not contain the thread names, so I can't determine which threads that are the fast and slow allocators.
29-01-2014