java程序运行原理

目录

整体预览

java程序运行原理

  1. 编写源代码 .java文件。
  2. 编译—》.java–>.class.
  3. 加载类信息:将class文件内容加载到JVM运行时区。
  4. 执行代码。

JVM运行时数据区

java程序运行原理
方法区:JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据。
堆内存:JVM启动时创建,存放对象的实例。可细分为:老年代、新生代(Eden、S0、S1)。
虚拟机栈:每个线程独有的空间。一个线程会执行一个或者多个方法,一个方法对应一个栈帧。
栈帧主要包含:局部变量表、操作数栈、动态链接、方法返回地址、附加信息等。默认为1M,超出会出现*Error异常。
本地方法栈:主要用于执行本地方法,即Navtive方法,和虚拟机栈类似。
程序计数器:记录当前执行字节码的位置。在切换线程后,需要通过程序计数器,来恢复线程的正确执行位置。

编译加载

java程序运行原理
将类信息加载到运行时数据区,用于程序的执行。

创建线程执行java程序运行原理

创建线程执行代码,线程里面的数据和信息来源于之前加载的类信息。

JVM执行方法,方法调用原理java程序运行原理

执行代码,一个方法执行完后,在创建一个方法栈帧执行下一个方法。