This is about "unbalanced" hash table, where certain entries get stuck at the end of a bucket's linked list, even though they have much higher lookup count the the other entries in the list.
One way to fix this would be to make sure the high lookup entries remain at the head of the list (either by adding the new entries to the tail, or marking the special entries by a special bit in their memory pointer, and checking that bit when inserting a new element, and if the bit is ON we add new element after the special one)
We also should add the "verify_lookup_length" warning to all tables and enable it for product builds.
Lastly, as part of this feature we should determine how we can test and validate this performance issue and any solution (currently the performance warning can pop-up during any debug test and possibly interfere with it - would be nice to have a dedicated test).
- duplicates
-
JDK-8160577 verify_lookup_length is defined and implemented in BasicHashtable, but only used by SharedDictionary
-
- Closed
-
- relates to
-
JDK-8168151 Why do we need BasicHashtableEntry<F>::next_addr() API?
-
- Closed
-
-
JDK-7133093 Improve system dictionary performance
-
- Resolved
-
-
JDK-8138760 [JVMCI] VM warning: Performance bug: SystemDictionary lookup_count=21831450 lookup_length=1275207287 average=58.411479 load=5.572844
-
- Resolved
-
-
JDK-8181450 assert in BasicHashtable::verify_table
-
- Resolved
-
-
JDK-8166145 runtime/threads/ThreadInterruptTest3 fails with ExitCode 0
-
- Closed
-