Java核心机制之JVM篇

一、JVM虚拟机是什么?

        JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。

        对于不同的平台,有不同的虚拟机。Java语言的可移植性就是基于JVM,任何平台只要装有针对于该平台的JVM,字节码文件(.class)就可以在该平台上运行。也就是“一次编译,处处运行”。

二、JDK、JRE、JVM之间的关系

        1、JDK:java开发工具包,是提供给java开发人员使用的,其中包含了java相关的开发工具,如编译工具(javac.exe)、打包工具(jar.exe)等等,也包含了JRE。

        2、JRE:java运行环境,包括JVM虚拟机和java程序所需的核心类库等,如果只是想运行一个开发完成的java程序,只需要安装JRE即可。

        总体来说它们之间的关系即:JVM ⊂ JRE ⊂ JDK

三、JVM的运行位置

       如图所示

四、JVM的基本结构

       如图所示

  

1、方法区:用于存储运行时常量池、已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

2、堆:在虚拟机启动时创建,用于存储对象实例,也是发生GC的主要区域。堆内的分区有,新生代、老年代、永久代(java8取消了永久代)。其中新生代包含了Eden区和Survivor区,Survivor区里面又分为From区和To区。

3、虚拟机栈:是线程私有的,它的生命周期与线程相同,随线程而生,随线程而灭。每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧,每一个方法被调用直至执行完毕的过程,就对应这一个栈帧在虚拟机栈中从入栈到出栈的过程。栈帧用于存储局部变量表、操作数栈、动态链接、方法返回值(地址)和一些附加信息。

4、本地方法栈:与虚拟机栈相似,它们之间的的区别不过是虚拟机栈为虚拟机执行java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用的Native方法服务。

5、程序计数器:用于记录当前线程所执行到的字节码的行号,也就是当前线程执行到的内存地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值