Java中的JVM虚拟机

本文详细介绍了Java虚拟机(JVM)的体系结构,包括运行时数据区的各个部分如虚拟机栈、本地方法栈、程序计数器、堆和方法区。探讨了对象的创建过程、访问定位方式,以及类加载机制,包括类加载子系统的作用、加载过程和类加载器的双亲委派模型。

JVM 虚拟机的位置

在这里插入图片描述
JVM 是运行在操作系统之上的,它与硬件没有直接的交互

JVM 虚拟机的体系结构

在这里插入图片描述

JVM 运行时数据区

在这里插入图片描述

虚拟机栈

  • 栈是线程私有的,栈的生命周期与线程相同
  • 它存放的数据:主要存放局部变量。局部变量可以是:基本数据类型(boolean、byte、char、short、int、float、long、double)和引用类型(reference 类型)

栈的运行原理

在这里插入图片描述

  • 每个线程都有自己的栈,栈中的数据都是以栈帧的格式存在
  • 在这个线程上正在执行的每个方法都对应一个栈帧
  • 栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种数据信息
  • JVM 直接对栈的操作只有压栈和出栈,遵循先进后出原则
  • 如果在该方法中调用了其他方法,对应的新的栈帧会被创建出来,放在栈的顶端,成为新的当前栈帧
  • Java 方法有两种返回的方式,一种是正常的函数返回,使用 return 指令;另外一种是抛出异常。不管使用哪种方式,都会导致栈帧被弹出

示例

public class StackFrameTest {
   
   

    public static void main(String[] args) {
   
   
        try {
   
   
            StackFrameTest test = new StackFrameTest();
            test.method1();
        } catch (Exception e) {
   
   
            e.printStackTrace();
        }
        
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值