JVM 架构图如下:

类加载器

双亲委派机制

  1. 当类加载器收到加载请求
  2. 将这个类加载请求委托给父类加载器去完成,一直向上委托,直到根加载器(启动类加载器)
  3. 启动类加载器检查是否能加载这个类,能加载就结束,使用当前的类加载器,否则抛出异常(Class not found),通知子类加载器加载
  4. 重复步骤3

native

使用 native 关键字修饰的 java 方法,表示已超出 java 的作用域范围,会调用 C 语言库。

进入本地方法栈

调用本地方法接口 JNI

JNI 的作用是扩展 Java 的使用,融合不同的编程语言为 Java 所用

方法区

方法区被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间。

参考资料:

狂神说,双亲委派机制:https://www.bilibili.com/video/BV1iJ411d7jS?p=3&spm_id_from=pageDriver