-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
b10
Analysis shows that a handful of small ConcurrentHashMaps used during bootstrap is subject to some amount of resizing. Initializing these to slightly larger values improves startup metrics measurably on default images without regressing performance on minimal images.
diff -r 05ff6e27de45 src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java
--- a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java Mon Aug 12 10:02:25 2019 +0200
+++ b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java Mon Aug 12 12:04:34 2019 +0200
@@ -183,7 +183,7 @@
this.parent = parent;
this.ucp = ucp;
- this.nameToModule = new ConcurrentHashMap<>();
+ this.nameToModule = new ConcurrentHashMap<>(32);
this.moduleToReader = new ConcurrentHashMap<>();
}
diff -r 05ff6e27de45 src/java.base/share/classes/jdk/internal/module/ServicesCatalog.java
--- a/src/java.base/share/classes/jdk/internal/module/ServicesCatalog.java Mon Aug 12 10:02:25 2019 +0200
+++ b/src/java.base/share/classes/jdk/internal/module/ServicesCatalog.java Mon Aug 12 12:04:34 2019 +0200
@@ -81,7 +81,7 @@
}
// service name -> list of providers
- private final Map<String, List<ServiceProvider>> map = new ConcurrentHashMap<>();
+ private final Map<String, List<ServiceProvider>> map = new ConcurrentHashMap<>(32);
private ServicesCatalog() { }
diff -r 05ff6e27de45 src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java
--- a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java Mon Aug 12 10:02:25 2019 +0200
+++ b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java Mon Aug 12 12:04:34 2019 +0200
@@ -183,7 +183,7 @@
this.parent = parent;
this.ucp = ucp;
- this.nameToModule = new ConcurrentHashMap<>();
+ this.nameToModule = new ConcurrentHashMap<>(32);
this.moduleToReader = new ConcurrentHashMap<>();
}
diff -r 05ff6e27de45 src/java.base/share/classes/jdk/internal/module/ServicesCatalog.java
--- a/src/java.base/share/classes/jdk/internal/module/ServicesCatalog.java Mon Aug 12 10:02:25 2019 +0200
+++ b/src/java.base/share/classes/jdk/internal/module/ServicesCatalog.java Mon Aug 12 12:04:34 2019 +0200
@@ -81,7 +81,7 @@
}
// service name -> list of providers
- private final Map<String, List<ServiceProvider>> map = new ConcurrentHashMap<>();
+ private final Map<String, List<ServiceProvider>> map = new ConcurrentHashMap<>(32);
private ServicesCatalog() { }