JVM复习之路(一)——最常见却考的最多的内存模型

JVM,即java virtual machine,以前编程的时候,用的都是封装比较多层的方法了,直到自己看了《深入理解java虚拟机》这本书之后,才发现自己小小的一些操作对于虚拟机而言,都是一个繁琐的运作过程。

JVM内存模型:

1.程序计数器

Program Counter Register,PCB,若线程运行的是java程序,则PCR记录的是正在执行的JVM字节码的地址(行数);若运行的是native方法,则为undefined,这个区域是唯一一个在JVM中没有规定任何内存溢出异常的区域,是线程隔离的

2.java虚拟机栈

JVM stack,生命周期与线程相同,描述的java方法执行的内存模型,每个方法执行的同时创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息,局部变量表存储了各种基本数据类型,对象引用和returnAddress类型,大部分支持动态扩容,允许固定容量,只为执行java字节码,抛出的异常有内存溢出和栈空间溢出

3.本地方法栈

只为了执行native方法服务,不限语言,其余和JVM栈类似

4.java堆

存储对象实例,new出来的对象实例都是在堆里,栈里的是引用,内存空间可物理不连续,但是逻辑上连续,本地内存由GC管理,人称GC堆,没内存可分配,也不能再扩容时,报内存溢出异常(-Xms JVM初始分配的堆内存,-Xmx JVM最大允许分配的堆内存,按需分配)

5.方法区

人称永久区微笑因为基本上进来的都一直都存在,用于存储已被JVM加载的类信息,常量,静态变量,即时编译后的代码等,可报内存溢出的异常

常量池在这里,存放编译期产生的各种字面量和符号引用

图什么的,这么晚就不放了

假装有图.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值