【JVM】Demo实战总结(一)

是什么?

 JVM(java virtual machine),它是运行java字节码的虚拟机。包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。它是运行在操作系统之上的。

基本结构

JVM主要有三个主要的子系统构成,包括类加载子系统、运行时数据区、执行引擎。如下图显示
在这里插入图片描述

运行时数据区

 JVM内存区域主要分为线程私有的【程序计数器、虚拟机栈、本地方法栈】和线程公有【方法区、Heap】。结构图如下:
在这里插入图片描述
:线程私有数据区域生命周期是跟随者线程共存亡,不需要垃圾器回收;而线程公有的是根据虚拟机的启动/关闭而创建/销毁的。

1.程序计数器

 它是当前线程所执行的字节码的行号指示器,存储程序下一个执行的字节码。是线程私有的。如果是正在执行java方法的话,计数器记录的是虚拟机字节码指令的地址,如果还是Native,然后就是空。

2.虚拟机栈

 是描述的java方法执行的内存模型,每个方法在知识性的同时都会创建一个栈帧,然后用来存储局部变量表、动态了解、操作数栈、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机入栈中到出栈的过程。

在这里插入图片描述

3.本地方法栈

 类似于虚拟机栈。他们的区别只是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈是为虚拟机使用的Native服务。

4.Java堆

 虚拟机启动时自动分配创建,用于存放对象的实例,然后几乎所有对象,都是在堆上分配内存,同样也是垃圾回收主要的区域。
在这里插入图片描述

5.方法区

  包括存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码等数据。成为堆的一个逻辑部分,所以别名也成非堆;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值