JVM内存模型解析


提示:以下是本篇文章正文内容,Java系列学习将会持续更新

一、JVM内存模型

在这里插入图片描述

1-1 方法区

方法区: 存放方法,主要就是指令数据,以字节码为代表的指令数据。也会有部分附属的方法基本信息。—— 扩展起来认为,就是保存类的信息
 逻辑上,认为类的相关数据放这里。
 逻辑上,静态属性放在方法区。
方法区以类为单位,一般会将整个类的方法全部存进去。

1-2 堆区

堆(Heap) : 堆砌对象的地方。
 堆中的数据以对象为基本单位进行管理。
 属性空间是随着对象走的,所以逻辑上认为属性是保存在堆区的。

1-3 栈区

栈(stack):以栈帧(frame) 为基本单位。
 保存局部变量的值,包括:
  1.用来保存基本数据类型的值;
  2.保存类的实例,即堆区对象的引用(指针)。
  3.也可以用来保存加载方法时的帧

随着方法本次执行出现,本次执行结束消亡。

1-4 PC寄存器

Program Counter : 程序计数器,保存下一 条要执行的指令的位置。

  1. PC寄存器是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域。
  2. 在JVM规范中,每个线程都有它自己的PC寄存器,是线程私有的,生命周期与线程的生命周期保持一致。

回到目录…

二、执行引擎

在这里插入图片描述
Execution Engine : 执行引擎。

  1. 读取PC中保存的值 (一般就是个地址)
  2. 根据PC中的值,去内存中(方法区),读取一条指令 (字节码)
  3. 执行具体具体的字节码
  4. 默认情况下PC的值自动+1 (语句自动执行下一条)

2-1 JIT Compiler

 JIT Just In Time (即时编译) :提示执行效率的一套机制。

 实际上JVM在执行过程中,可以发现有些字节码执行的比其他的更频繁。这个时候,再去按照字节码翻译的模式,效率就低了。所以会在运行期间,即时地把这些热点字节码直接编译成本地的机器码,速度就能提升。

 JVM的执行,就有个预热的阶段的。就像运动前的热身一样,让自己的状态达到最好,效率才最高。

2-2 GC

Garbage Collector : 垃圾回收器。
Garbage Collect : 垃圾回收。
 有了GC之后,相对地解放了开发人员的心智,让开发人员只需要考虑什么时候需要一块内存 ,而不需要考虑什么内存不再被需要了。

好处 : 不需要不考虑内存释放的问题
坏处 : 内存的直接彻底和我们无缘了

回到目录…


总结:
提示:这里对文章进行总结:
以上就是今天的学习内容,本文是JVM的学习,认识了JVM的内存结构,以及每个部分上存储的东西。之后的学习内容将持续更新!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只咸鱼。。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值