Investigation into traces of J2SE startup time has shown that the
single largest consumer of startup time for non-GUI Java applications
is the static initializer for java.lang.Character. This routine
initializes several large tables containing the results for routines
such as isDigit() or isJavaIdentifierStart() for all Unicode
characters. The loops that initialize these tables are long-running.
At least the US-ASCII case should be optimized to avoid the
initialization of these large tables during startup in that locale. A
more general fix may be to split up the tables into ranges so that for
a given locale only a small fraction of the overall table is
initialized in the common case.
single largest consumer of startup time for non-GUI Java applications
is the static initializer for java.lang.Character. This routine
initializes several large tables containing the results for routines
such as isDigit() or isJavaIdentifierStart() for all Unicode
characters. The loops that initialize these tables are long-running.
At least the US-ASCII case should be optimized to avoid the
initialization of these large tables during startup in that locale. A
more general fix may be to split up the tables into ranges so that for
a given locale only a small fraction of the overall table is
initialized in the common case.
- relates to
-
JDK-4756453 Optimize Character.java table initialization
-
- Resolved
-
-
JDK-4756791 Regression test java/lang/String/ToUpperCase failing
-
- Closed
-
-
JDK-4756458 Restructure Character.java Latin-1 optimization
-
- Resolved
-
-
JDK-4757212 JVM 1.4.2 regression on Sierra EE startup compared to JVM 1.3.1 in mixed mode
-
- Closed
-