深入学习JVM(二) — JVM垃圾收集总结

JVM垃圾收集相关总结

只要努力就能解决的事情,我觉得就是最简单的事情!

最近学习了关于JVM相关的东西,距离上一次写JVM的内存模型已经时隔有个一年半载了,这次又深入的学习了一下;之前只是局限于表面,这次系统的学习了一下,下面对最近学习的东西进行总结(输出);目前计划可能会分成2到3的文章进行讲解;下面我们言归正传!

先说一下垃圾回收的区域:

  • 栈: 栈中的生命周期是跟随线程的,线程销毁也就释放了内存空间,所以一般不需要关注
  • 方法区: 这一块也会发生垃圾回收,也不是我们关注的重点
  • 堆: 这里的对象是垃圾回收的重点!

如果对栈,堆,方法区不熟悉的话可以看下上面的JVM的内存模型,然后再来看这篇文章,循环渐进的学习;

下面我对要说到的内容进行罗列一下:

  • 怎么判断对象的存活

  • 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)

  • 如何判断一个常量是废弃常量

  • 如何判断一个类是无用的类

  • 垃圾收集有哪些算法,各自的特点?

  • HotSpot 为什么要分为新生代和老年代?

  • 常见的垃圾回收器有哪些?都负责哪部分的回收?

  • 各个垃圾收集器的搭配使用

  • Minor Gc 和 Full GC 有什么不同呢?

  • 垃圾回收器的一些重要参数

那接下来我们逐个讲解一下,一一攻破!

怎么判断对象的存活

一般有两种方式:引用计数法,可达性分析,jvm使用的是可达性分析!

引用计数法

给对象添加一个引用计数器,当对象增加一个引用时计数器就加1,引用消失时计数器就减1,引用计数等于0的时候,表示这个对象是可以回收的;这个方法实现简单,效率高,但是jvm没有采用这种算法来管理内存,主要的原因是这个算法它很难解决对象之间的相互循环引用的问题;

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享