「jvm」JVM面试题扩展:Java代码在JVM中的执行流程


「jvm」JVM面试题扩展:Java代码在JVM中的执行流程
文章图片
「jvm」JVM面试题扩展:Java代码在JVM中的执行流程
文章图片
【「jvm」JVM面试题扩展:Java代码在JVM中的执行流程】
「jvm」JVM面试题扩展:Java代码在JVM中的执行流程
代码示例:

  • JVM向操作系统申请内存 , 根据内存大小找到具体的内存分配表 , 然后把内存段的起始地址和终止地址分配给JVM ,
  • JVM获得内存空间后 , 根据JVM的参数配置设置堆、栈、方法区的内存大小
  • Class文件进行加载、验证、准备(为类的静态变量分配内存 , 初始化为系统的初始值)以及解析

  • 调用类的<init>方法(编译器会在java文件编译成class文件时收集所有类的初始化代码 , 包括惊天变量赋值 , 静态代码块 , 静态方法等)

  • 执行方法(启动main线程 , 执行main方法 , People people = new People()会在堆内存中创建一个People对象 , 对象引用people存放在栈中) 。

  • Test test = new Test()创建Test对象 , 调用静态方法toString , toString方法属于Test类 , 是从静态方法中获取的 , 放入栈中 , 通过栈中的peopel引用调用堆中的People对象 。
  • 再调用sport非静态方法 , sprot方法是对象Test的方法 ,sprot方法进行入栈 , 并通过栈中的peopel引用调用堆中的People对象;