JVM垃圾收集相关总结
只要努力就能解决的事情,我觉得就是最简单的事情!
最近学习了关于JVM相关的东西,距离上一次写JVM的内存模型已经时隔有个一年半载了,这次又深入的学习了一下;之前只是局限于表面,这次系统的学习了一下,下面对最近学习的东西进行总结(输出);目前计划可能会分成2到3的文章进行讲解;下面我们言归正传!
先说一下垃圾回收的区域:
- 栈: 栈中的生命周期是跟随线程的,线程销毁也就释放了内存空间,所以一般不需要关注
- 方法区: 这一块也会发生垃圾回收,也不是我们关注的重点
- 堆: 这里的对象是垃圾回收的重点!
如果对栈,堆,方法区不熟悉的话可以看下上面的JVM的内存模型,然后再来看这篇文章,循环渐进的学习;
下面我对要说到的内容进行罗列一下:
-
怎么判断对象的存活
-
简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)
-
如何判断一个常量是废弃常量
-
如何判断一个类是无用的类
-
垃圾收集有哪些算法,各自的特点?
-
HotSpot 为什么要分为新生代和老年代?
-
常见的垃圾回收器有哪些?都负责哪部分的回收?
-
各个垃圾收集器的搭配使用
-
Minor Gc 和 Full GC 有什么不同呢?
-
垃圾回收器的一些重要参数
那接下来我们逐个讲解一下,一一攻破!
怎么判断对象的存活
一般有两种方式:引用计数法,可达性分析,jvm使用的是可达性分析!
引用计数法
给对象添加一个引用计数器,当对象增加一个引用时计数器就加1,引用消失时计数器就减1,引用计数等于0的时候,表示这个对象是可以回收的;这个方法实现简单,效率高,但是jvm没有采用这种算法来管理内存,主要的原因是这个算法它很难解决对象之间的相互循环引用的问题;

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐