JVM篇笔记整理-PC寄存器

运行时数据区

在这里插入图片描述

红色部分代表一个进程一份(和虚拟机生命周期相同),而灰色的代表一个线程一份。

1.假设有5组线程,那么就有5组程序计数器、本地方法栈和虚拟机栈,这5组线程共享方法区和堆空间。

2.Java8以后改方法去叫做元数据区,使用的是本地内存。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQUW2lEe-1591405432730)(\images\img1.png)]

1.在Hotspot JVM里, 每个线程都与操作系统的本地线程直接映射。当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建。Java线程执行终止后,本地线程也会回收。

2.操作系统负责所有线程的安排调度到任何一个可用的CPU上。一旦本地线程初始化成功,它就会调用Java线程中的run()方法。、

3.如果只剩下一个守护线程,那么就可以关闭虚拟机了。

PC寄存器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F0wrieO3-1591405432738)(\images\img3.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkMiSD8Q-1591405432741)(\images\img4.png)]

  • 它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。

  • 在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一-致。

  • 任何时间- -个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果是在执行native方法,则是未指定值(undefned)。

    既没有GC,也没有OOM的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HNnimzW8-1591405432742)(\images\img5.png)]

个人理解:就是告诉虚拟机,将要执行一个什么动作,切换回此线程时,知道从哪里开始执行。

实例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDIHtmrr-1591405432744)(\images\img6.png)]

编译上面的实例程序,反编译class文件,得到main部分的编译代码如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yksmhet9-1591405432745)(\images\img7.png)]

左边的数字就是指令地址(也叫偏移地址)就是pc寄存器所存储的东西。右边的就是操作指令。

重点理解下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z5zsP9lG-1591405432748)(\images\img8.png)]

关于寄存器的两个问题:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wT9a7672-1591405432749)(\images\img9.png)]

理解:就是说假如有两条线程,第一个线程执行了一半,然后CPU切换执行了另一线程,这个线程执行完成以后就需要回到第一个线程,pc寄存器的目的就是记录第一个线程执行到哪里了,一遍回来接着执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值