JVM的整体结构和生命周期

1. JVM 的整体结构

image-20200519085324007

详细图:

image-20200519085426424

上图中,我们可以根据位置,暂且分为三层结构。

1.1上层:

​ Java虚拟机是用来解释运行字节码文件的,所以它的入口原材料是 Class Files, 字节码文件首先要经过类装载器子系统(Class Loader SubSystem),类装载器子系统的作用就是将class files 文件加载到内存中,生成一个大的class 对象。 在这个过程中,就会涉及到加载(loading)、链接(Lingking)、初始化(Initialization)


1.2中层:

运行时数据区(Runtime Data Area)。当字节码文件经过类装载器子系统时,会把它管理的内存划分为若干个不同的数据区域。这些区域各有各自的用途、以及创建时间和销毁时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。

在多个线程当中,它们是共享方法区和堆的;对于Java虚拟机栈、本地方法栈以及程序计数器是每个线程单独拥有一份的

下面进行单独讲解这几块区域:

1.2.1.程序计数器

线程私有 **占据一块较小的内存空间,可以看做当前线程所执行的字节码的行号指示器。**在虚拟机概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。

由于jvm的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。因此未来线程切换后能恢复到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值