JDK-7147987 : Performance regression in ByteBuffer.{put,get}
Type:Bug
Component:hotspot
Sub-Component:compiler
Affected Version:7,8,9,10
Priority:P3
Status:Open
Resolution:Unresolved
OS:generic
CPU:generic
Submitted:2012-02-22
Updated:2025-10-08
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.
This is JDK part of JDK-7147227 bug which I want to keep to track VM performance regression.
Comments
[~dskantz] it would be nice to investigate this with latest JDK by our group first. Until then sustaining group should ignore this.
04-04-2023
Hi [~kvn]. We're doing some housekeeping on open issues. I tried reading up on the related issues, but I am not sure I have the full context. Do you think there is anything left to investigate on this one? Thank you.
04-04-2023
Have to check generated code by Graal for this case.
Justification for the "Medium" impact from above.
This is a performance regression, therefore the impact is normally "High". However, the issue has been present since 2012 and customers have been experiencing it for a long time. As there was no input coming from customers showing major annoyance, I reduced the impact from "High" to "Medium".
30-05-2016
ILW=MMH=P3
Deferring to JDK 10 as the compiler team does not have the resources to investigate this issue at this time.
25-05-2016
ILW=Performance regression, fairly common use case, none=HMH=P2
25-09-2014
Please evaluate if this is still an issue.
30-04-2014
EVALUATION
With 6u29 then the only subtype of ByteBuffer that is loaded by this test is HeapByteBuffer. With JDK7 then MappedByteBuffer is additionally loaded because it is used for mapping the instrumentation buffer in support of new performance counters in the class loading code. The additional substype means C2 cannot do some optimizations and this explains the slow down between jdk7-b69 and jdk7-b73. It's not clear that we can do anything this as the majority of applications loading DirectByteBuffer (a subtype of MappedByteBuffer) when doing I/O or other operations.