class initialization check overhead
Kresten Krab Thorup
Thu Oct 24 01:21:00 GMT 2002
Adam Megacz wrote:
> Or perhaps give gcj a list of classes that you know will be referenced
> eventually, and have it run those <clinit>s immediately upon startup.
> You'd have to have a way to figure out the dependency tree... is there
> enough information at runtime to do this? If not, this would either
> require modifications to the linker, which is probably a bad idea.
We have to be very careful in modifying the initialization code, since
JLS places some very specific requirements on the order of initialization.
Effectively, all <clinit> *must* run lazily, i.e. at the latest possible
time before the class is used. The reason for this is that <clinit>'s
may depend on one another, so it it not until runtime it can be
determined if there are cyclic problems, and how they should be resolved...
More information about the Java