JVM(一)基本内存模型

1、在java的开发过程中,相信大多数都听说过jdk,jre和jvm的名词,这几样都有什么区别呢?

(1)JRE(Java Runtime Environment),也就是java运行平台,所有的java程序都要在JRE环境下才能运行。 
(2)JDK(Java Development Kit),是开发者用来编译、调试程序用的开发包。JDK也是JAVA程序需要在JRE上运行。 
(3)JVM(Java Virtual Machine),是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 
JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。 
Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

以上的描述,你可以简单的理解jre就是我们计算机的操作系统;jdk就是我们的开发工具,依赖操作系统;jvm是jre的一部分,也就是最核心部分的cpu;我们编写出来的java文件经过一系列的转化,最终都是由jvm去执行响应的。

2、既然jvm的由来已经搞清楚了,那如果我们面试遇到jvm是什么该怎么回答呢?
(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。 
(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。

(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

3、jvm的内存模型

简单看了一下内存模型,简单看看每个区域究竟存储的是什么(干的是什么):

  • 堆:存放对象实例,几乎所有的对象实例都在这里分配内存
  • 虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息
  • 本地方法栈:本地方法栈则是为虚拟机使用到的Native方法服务(Native Method就是一个Java调用非Java代码的接口。方法的实现由非Java语言实现,比如C或C++)。
  • 方法区:存储已被虚拟机加载的类元数据信息(元空间,元空间存储着类的信息(包括类的名称、方法信息、字段信息..))。
  • 程序计数器:当前线程所执行的字节码的行号指示器,每一个线程都有一个独立的程序计数器,线程的阻塞、恢复、挂起等一系列操作都需要程序计数器的参与,因此必须是线程私有的。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值