java程序运行原理

目录

整体预览

JVM整体预览

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

JVM运行时数据区

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

编译加载

在这里插入图片描述
将类信息加载到运行时数据区,用于程序的执行。

创建线程执行在这里插入图片描述

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

JVM执行方法,方法调用原理在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值