>From CR:
The useful/general BasicHashtable uses a block allocation scheme to reportedly 
reduce fragmentation. When the StringTable and SymbolTable used to use this 
hashtable, performance benefits were reportedly observed because of the block 
allocation scheme. Since these tables were moved to the concurrent hashtables, 
the tables left that use the block allocation scheme are:

AdapterHandlerLibrary, ResolutionError, LoaderConstraints, Leak profiler bitset 
table and Placeholders. 3 of these tables are very small and never needed block 
allocation to prevent fragmentation at least. Also there are 3 KVHashtables, 
which are built from BasicHashtable. 2 are used during dumping and 1 is 
ID2KlassTable which appears small.

ModuleEntry, PackageEntry, Dictionary, G1RootSet for nmethods, and JvmtiTagMap 
tables didn't use the block allocation scheme.

Removing this removes 7 pointers per table, and for each ClassLoaderData, which 
has 3 tables, removes 21 pointers.

This change was performance tested on linux and windows.

It was also tested with tier1-6.

-------------

Commit messages:
 - 8263976: Remove block allocation from BasicHashtable

Changes: https://git.openjdk.java.net/jdk/pull/3123/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3123&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8263976
  Stats: 169 lines in 16 files changed: 17 ins; 122 del; 30 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3123.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3123/head:pull/3123

PR: https://git.openjdk.java.net/jdk/pull/3123

Reply via email to