java程序启动时会发生什么?

Nik*_*sov 8 java jvm jar executable-jar classloader

最近已经触及Java类加载器并突然认识到,当有人调用时,不能完全理解一步一步发生的事情

java -jar App.jar
Run Code Online (Sandbox Code Playgroud)

好吧,我想

  1. 创建了一个新的JVM实例
  2. 它使用ClassLoader加载主类和其他类
  3. 字节码开始从main()方法执行

但我仍然认为有很多事情我需要了解更多.

  • 谁和如何决定在启动时应该加载哪些类以及哪些类曾经需要?

我找到了两个相关的问题,但没有解释如何将其应用于Java现实.

计算机程序运行时会发生什么?

运行程序会发生什么?

vis*_*aim 2

\n

\xe2\x80\xa2谁以及如何决定哪些类应该在启动时加载以及哪些类需要加载?

\n
\n\n

我们需要了解java类加载的基础知识。最初引导类加载器(它作为 VM 本身的一部分本地实现)负责加载核心系统类。然后还有其他类加载器,例如扩展、系统、用户定义(可选)类加载器,它们决定何时以及如何加载类。\n 类加载的基础知识

\n