JVM类加载到实例方法调用全过程--图解

Posted zzzz76

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM类加载到实例方法调用全过程--图解相关的知识,希望对你有一定的参考价值。

在我们加载类的过程中经过了这些步骤

  • 第一步 加载目标字节码至方法区,并转化为方法区的运行时数据结构
  • 第二步 在堆区创建一个java.lang.Class对象,提供了访问方法区内的数据结构的接口
  • 第三步 为静态域分配内存并设置初始值的连接阶段
  • 第四步 执行静态域构造器
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
Class targetClass = classLoader.loadClass(className);

如果我们接着创建新实例,并调用实例方法

  • 第五步 创建实例,执行实例构造器
  • 第六部 pc寄存器指向实例方法地址
  • 第七步 创建栈桢,执行方法指令
Object object = targetClass.newInstance();
Method method = targetClass.getDeclaredMethod("name", (Class<?>...)parameterTypes);
method.invoke(object, (Object...)args);

技术分享图片

以上是关于JVM类加载到实例方法调用全过程--图解的主要内容,如果未能解决你的问题,请参考以下文章

图解JVM内存区域划分

浅谈JVM-图解类加载机制

java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢?

java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢

JVM源码分析-类加载场景实例分析

JVM类加载机制