JVM(基础知识,垃圾回收)
Posted Zephyr丶J
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM(基础知识,垃圾回收)相关的知识,希望对你有一定的参考价值。
JVM
左边的书权威存在
JVM基础知识
主力机型
平时所用的虚拟机就是HotSpot
关键点:热点代码探测能力
体系结构
类加载子系统,执行引擎,运行时数据区
线程隔离的区域,有一个线程就要创建一个区域
垃圾回收就是要回收被共享的区域
运行时数据区
程序计数器:字节码的行号指示器,每一个线程都有一个独立的程序计数器
本地方法栈只能执行本地方法(native)
对象如何存放
类的创建过程
1.首先检查在常量池中是否有这个类的符号引用(类是用符号代替的);如果没有,要进行类加载,从磁盘(网络、jar包、数据库)加载到方法区中
2.给对象分配内存,在堆中划分这个内存块
3.初始化零值
4.为对象设置必要的信息
5.执行<init>()方法,相当于对象的构造器
在并发的时候有学过
会将长度相同的字段放一起,容易对齐,好管理
垃圾回收机制
循环引用:对象A引用对象B,对象B引用对象A,互相引用,虽然都已经死了,但是引用计数都不是0,会造成内存泄漏(也就是这块内存无法使用了)
例子
可以作为GC Roots的对象,列举几个即可
强弱是指垃圾回收的角度,什么情况下能被垃圾回收
虚引用相当于只是一个标识
每个对象没有引用了,并不是立即死亡,而是有一个自我救赎的机会,但救赎的机会只能有一个次,需要代码实现,但是这个机制不推荐使用
垃圾回收算法
针对不同生存周期的对象,做不同的垃圾回收算法
跨代引用是说朝生夕灭的对象和难以消亡的对象之间的引用
跨代引用一般会将引用变成第二类
绝对多数情况下是同代引用
这里MajorGC有时候也指整堆收集
标记清除算法
关键:空间碎片化
标记复制算法
分区->标记->复制->清除
标记整理算法
标记->移动->清除
经典的垃圾回收器
爆炸的符号表示JDK9中不让这样搭配了
Serial
这里的Safepoint安全点是一个垃圾回收的标识,当所有线程跑到这个点,再开始垃圾回收
ParNew
CMS成就了ParNew(Serial 也可以搭配CMS,但是是单线程的,还不如用ParNew)
Parallel Scavenge
提高吞吐量和尽可能缩短垃圾收集停顿时间有什么区别?
虽然说CMS是尽可能缩短停顿时间,每次垃圾回收就一小会,但是会多次停顿,比较频繁,这样用户体验会比较好,但总体的停顿时间并不少
但是这个收集器是为了能效,很明显不是用于web服务,而用于后台运算之类的
Serial Old
Parallel Old
CMS
这里为什么预留一部分空间,老师这里讲的是因为需要给新生代的收集器分配担保,如果新生代存活对象多的话,可能会需要分配担保
但是我觉得这并不是区别于其他老年代收集器的原因,因为其他收集器我感觉也要分配担保啊
这里提到的是,需要预留空间给并发收集时的程序运作使用,意思应该是说并发收集时的时候,会有老年代的对象会被程序分配,所以需要给这些对象预留空间
但是不可能刚开始就创建一个老年代的对象吧,需要晋升,所以这里应该指的是在这一次执行过程中晋升的对象填进了老年代的空间里。而其他收集器在收集老年代垃圾的时候都是单独占用堆内存的,并不会有对象在这个过程中晋升,所以预留空间小点就可以
这里没搞太明白,完了补充!
G1
衡量标准变成了哪个内存空间垃圾最多,回收收益最大,就回收哪个
大对象直接进入老年代
记忆集是什么,卡表,索引号是什么?
增量更新算法?原始快照算法?三色标记法(后面补充了)
对于标记过程中发生的引用变化 (可能导致标记缺失 不是垃圾的被判断为垃圾) 为了解决这个问题 cms采用增量更新算法 g1采用快照
三个问题:跨区域引用怎么搞?在并发标记的时候,用户线程对我产生了干扰,怎么办?怎么预测回收这个空间有多少收益、需要停顿多久?
总体来说将内存的空间管理的比较好
这里应该是标记整理
补充:
三色标记法
链接:https://blog.csdn.net/Gui_yunuo/article/details/106720168
这个方法主要是处理对象的标记问题,用三种颜色的标记来表示对象以及其引用对象是否已经被检查过了
但是在并发标记的过程中,可能会出现检查过的对象引用被修改指向一个未被检查过的对象,这个未被检查过的对象的引用恰好也断开了(具体链接文章里有),意思就是说,可能有一个对象是有引用的,但是却因为没有扫描到而要被垃圾回收
为了解决这个问题,cms采用的是增量更新算法,g1采用的是快照
增量更新就是说,把增加引用的对象重新标记为灰色
快照就是说,如果把灰色标记对象的引用删除了,就把这个引用推给GC的堆栈,让它还可以找到这个引用
前者用在CMS上,后者用在G1
以上是关于JVM(基础知识,垃圾回收)的主要内容,如果未能解决你的问题,请参考以下文章