📜  JVM是否创建Main类(具有main()的类)的对象(1)

📅  最后修改于: 2023-12-03 14:43:37.749000             🧑  作者: Mango

JVM是否创建Main类的对象

在Java程序中,有一个执行入口main()方法,该方法必须位于一个类中。通常情况下,此类即为Main类。那么问题来了,JVM是否会创建Main类的对象呢?

JVM不会创建Main类的对象,因为main()方法是一个静态方法,它属于类而不是对象。JVM只会加载Main类,而不会创建一个实例来调用它的main()方法。

具体来看,当Java程序被启动时,JVM会找到Main类,并通过其main()方法开始执行程序。这个过程中,JVM会根据Main类的字节码文件来创建Class对象。但是,这个Class对象并不是Main类的实例,它只是Main类的元数据表示。

然后,JVM会在堆中分配空间来存储所有的静态变量,包括Main类的静态变量。这个过程中,Main类并没有被实例化。

最后,JVM会调用Main类的main()方法来启动程序。这个过程中,main()方法被当作静态方法来调用,而且并没有主动通过new关键字来创建Main类的对象。

综上所述,JVM在执行Java程序的时候,不会创建Main类的实例。而只是通过Main类的字节码文件创建一个Class对象来表示Main类,然后在堆中创建静态变量,最后静态调用main()方法启动程序。

参考资料:《深入理解Java虚拟机》