2017-07-11 54 views
-1

当我们运行Java应用程序时,我们知道要加载的第一个对象是java.lang.Object。但是,java.lang.Object具有抛出异常的方法,如CloneNotSupportedExceptionInterruptedException,这反过来是其他对象。Java应用程序启动 - 如何创建第一个对象

问题是:当java.lang.Object刚刚被加载时,如何让它的子对象(例如异常对象)被创建?

+2

请不要在这里张贴问题之前,一些研究。 https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html –

+0

通过“创建”,我假设你的意思是“加载”? – shmosel

+0

是创建意味着加载 – Shivaprasad

回答

3

loadedinstantiated是两个不同的东西。

粗糙解释:

loaded指JVM装载的类到它的基类加载器。这使得该类可用于实例。当JVM启动时,它首先通过使用/链接的文件加载所有类,而没有实例化它们。这意味着,当第一个new Object()创建时,Object使用的例外已知。这仍然是一个声明。只有在引发特定异常时才会创建该异常的实例。

对于技术上是正确的解释见这@Jim驻军已经提到的链接:

JVM: Loading, Linking, and Initializing

+0

谢谢!为简短回答和指导。 – Shivaprasad

相关问题