CSR :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
A class may also be initialized as a result of execution of other bytecodes such as getstatic, new, putstatic, invokestatic etc as specified in JVMS 5.5. `Class::forName` and `Unsafe::ensureClassInitialized` are existing workaround to initialize a Class. It's cumbersome to use Class::forName to initialize a class and many JDK classes use `Unsafe::ensureClassInitialized` rather than Class::forName to initialize a class. One typical use of `Unsafe::ensureClassInitialized` to force class initialization is to enable JIT inlining as well as the method handle can avoid the class initialization barrier. The other use of `Unsafe::ensureClassInitialized` to force class initialization is to ensure that private static members are initialized and published to other classes (outside its nest) to access, e.g. shared secrets.
|