1、JVM模型

###Java运行时数据区模型
程序计数器,Java虚拟机栈,Java堆,本地方法栈,方法区
在这里插入图片描述

###程序计数器 (私有)
是线程私有的,记录了线程执行的地址,方便多线程的情况下,线程切换回来的时候,继续执行
字节码解释器工作时,就是通过改变程序计数器的值来选取下一次需要执行的指令:循环、跳转、分支、异常处理、线程切换。
如果执行的是Java方法:程序计数器记录的是Java执行的地址
如果执行的是JNI方法:程序计数器记录为空。此处是Java唯一没有OutOfMemeryError 的区域

###Java虚拟机栈(私有)
Java虚拟机栈也是线程私有的
程序执行的每个方法,在栈里就是一个栈帧
局部变量表,也在虚拟机栈里,表里存了八大基本类型的数据,和引用类型的地址。
当访问的栈深大于虚拟机的栈深的时候,程序会报StackOverFlowError,如果栈深度是可扩展的情况下,超出栈深,会报OutOfMemerryError。
###本地方法栈(私有)
本地方法栈提供虚拟机一些native方法服务
HotSpot虚拟机把本地方法栈合并到Java虚拟机栈了。

###方法区 (共享)
常量池+类信息
常量池:1、字面量,常量信息 2、符号引用:类和结构的信息
JDK1.7:常量池是在方法区内部
JDK1.8:取消了方法区,由改为元空间。常量池就在元空间内

###直接内存(共享)
NIO相关

###(共享)
对象存放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值