Java虚拟机(三)

Java虚拟机(二)

在正式了解类加载之前我觉得很有必要先去了解运行时数据区,毕竟我们是个正常人,学习这件事有个章程,按照逻辑去理解总比死记硬背来的踏实。

那么我们就先了解了解运行时数据区:

Java虚拟机中将运行时数据区大致分为 堆、非堆(方法区)、虚拟机栈、本地方法栈、程序计数器五个模块。
其中 堆和非堆(方法区)区域是线程共有的,所有的正常运行的线程都可以访问并修改其中可见的数据。寄存器、虚拟机栈以及本地方法栈是随着线程的创建而创建的。每一个pc寄存器当中都存放着当前线程将要执行的下一条指令的位置,虚拟机栈中保存着当前线程尚未返回或者执行完毕的方法(栈帧),本地方法栈中存放着当前线程所调用的本地方法的记录,和虚拟机栈相似。

在这里插入图片描述
堆:主要存放Java对象和数组对象
在这里插入图片描述

方法区:加载入虚拟机的
所有的可用的类信息,包含常量、静态变量、普通变量、方法信息,包含这些field的类型信息 比如引入的成员变量是一个Map 那么就包含这个类型的引用信息,用简单的语言来说要是要让Java程序运行时能够知道每一个属性,方法都是属于谁的。

本地方法栈:和虚拟机栈基本相似,本地方法栈保存的是本地方法的
虚拟机栈:每个线程都有, 栈中由一个个栈帧组成,每调用一个方法就会多一个栈帧,方法执行结束,从方法中跳出(执行结束或异常导致退出时该栈帧被删除)。栈结构入栈出栈的过程符合方法调用的基本逻辑,用于表现程序执行的过程。
图片来自网络
在这里插入图片描述
程序计数器:存放当前线程将要执行的下一条指令的内存地址

Java虚拟机(四)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dave_Fong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值