RFR: JDK-8199406: Performance drop with Java JDK 1.8.0_162-b32

Poonam Parhar poonam.bajaj at oracle.com
Fri Mar 30 16:38:45 UTC 2018

Hello Thomas,

On 3/30/2018 8:34 AM, Thomas Schatzl wrote:
> Hi Poonam,
> On Thu, 2018-03-29 at 13:31 -0700, Poonam Parhar wrote:
>> Hello,
>> Please review the changes for the following bug that improve the
>> nmethod unloading times with a couple of optimizations.
>> JDK-8199406: Performance drop with Java JDK 1.8.0_162-b32
>> Webrev: http://cr.openjdk.java.net/~poonam/8199406/webrev.00/
>> This changeset includes two changes:
>> 1. In  compiledIC.cpp, CompiledIC::is_icholder_entry() , we need to
>> determine if the code blob is an itable stub. With this change,
>> before linearly searching through all the VtableStub entries, we
>> first check whether the codeblob is a vtable or not. We now also
>> parse through the list entries only once rather than doing it twice
>> in VtableStubs::is_entry_point() and VtableStubs::stub_containing().
>> 2. The second change helps avoid the virtual function calls in
>> CompiledICHolder::is_loader_alive(). CompiledICHolder now stores
>> information whether the metadata it holds is a method or a klass.
>> Testing:
>> - Customer testing confirming that their class-unloading times drop
>> from 10s of seconds to an average of 0.75 secs.
>> - mach5 jdk-tier1,jdk-tier2,jdk-tier3,hs-tier1,hs-tier2
>    does the change recover all class-unloading times as they were with
> pre-1.8.0_162-b32?
This is a regression that got introduced in 8u161 that increased the 
class-unloading times from an average of 0.65 secs to 10s of seconds for 
the customer. From the data received from the customer testing with this 
fix, on an average we lose around 0.05 secs when compared with pre-8u161 
runs. And this lost time is attributed towards the itable stub scanning 
that we still need to do in is_icholder_entry().

> The figures you show seem to only compare 1.8.0_162-b32 to 1.8.0_162-
> b32 + patch.
> If not, do you have any idea what the problem could be?
Large number of Interfaces, complex Interfaces/classes graph that causes 
large number of entries in the VtableStubs array can make this issue appear.


> Thanks,
>    Thomas

More information about the hotspot-runtime-dev mailing list