Chapter 5. Loading, Linking, and Initializing
5.2. Java Virtual Machine Startup
JVM启动时通过bootstrap class loader或者用户定义的class loader初始化一个类或者接口。JVM然后链接并初始化该类,并且调用其main方法。然后在开始按需载入其它类和方法。
5.3. Creation and Loading
Class or interface creation is triggered by another class or interface D, which references C through its run-time constant pool. Class or interface creation may also be triggered by D invoking methods in certain Java SE Platform class libraries (§2.12) such as reflection.
If C is not an array class, it is created by loading a binary representation of C (§4 (The class File Format)) using a class loader. Array classes do not have an external binary representation; they are created by the Java Virtual Machine rather than by a class loader.
We will sometimes represent a class or interface using the notation <N, Ld>, where N denotes the name of the class or interface and Ld denotes the defining loader of the class or interface.