JVM学习文档

1 JVM深入学习

makdown使用语法解释

1.1 JDK,JRE,JVM三者之间的关系

1.2 为什么要学习JVM

​ 因为JVM帮我们自动处理了内存管理,让我们不关注垃圾回收,所以JAVA才流行了这么久,

java底层决定了所写的代码逃不出---数据流、指令流、控制流,三大流

1.3运行时数据区解释

​ 1 程序计数器:指向当前线程正在执行的字节码指令的地址(行号)

​ 2 虚拟机栈: 栈--》数据结构 存储当前线程运行时所需要的数据、指令、返回地址。java中的方法是线程来执行的。

1.局部变量:存储定长的局部变量,寻址 4G 2的32次方。局部变量中的成员变量(Object a=new Object())在堆中,局部变量中只存储了成员变量的地址

2.操作数栈:把局部变量中的数据在操作数栈进行数据操作,然后再弹栈存到局部变量表中,局部变量表第0位存的是this。

3.动态链接:运行时多态,调用service的方法,运行时service回去找真正实现这个方法的类。

4.本地方法栈:方法是本地的方法,编译之后是看不出源码的,需要去官方文档查看。

5.方法区:存放静态变量,final常量等。

6.堆:所有new的对象。

重点:栈是线程独享,堆,方法区为线程共享

栈是先入后出:栈顶的元素先执行

1.4 内存模型

上面展示的是1.8版本之前的和1.8版本之后的内存模型区别。

新生代:主要包括eden区和两个servivor区,主要用于存放新建对象,eden空间不足已到servivor区,多次回收还存活的对象移动到老年区。

老年区:存放生命周期长的,想application级别的缓存。

永久区:保持class,method,field等对象

新生代回收: 采用复制回收算法。

旧生代回收:采用标记回收算法

栈的回收:采用的是弹栈

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值