JVM中,一个对象从诞生到消亡,垃圾回收是如何钩住它的?
- 内容介绍
- 文章标签
- 相关推荐
哎呀,说起JVM垃圾回收啊,那可真是个让人头疼又不得不了解的玩意儿! 就像你辛辛苦苦攒的钱,总是被各种各样的开销磨损掉一样那个。对象在JVM里头诞生了染后慢慢地变得没人要了这时候垃圾回收就得出来“收拾门户”了。 不地道。 单是它怎么知道哪些对象该扔、哪些对象还得留着呢? 这就涉及到一堆算法和收集器的东西了…我跟你说这比追剧还复杂!
GC Roots:一切的起点
差不多得了... 先说说得知道GC Roots是什么。你可依把它想象成一棵大树的根。在Java里头,虚拟机栈、本地方法栈、方法区、常量池等等那些地方引用的对象,就是GC Roots。 这些根节点是必须活着的! GC会从这些根节点开始,像探险一样地沿着引用链往下走。

如guo一个对象嫩同过引用链一直走到GC Roots, 那它就是活的!反之…嘿嘿…那就准备好被清理掉吧,希望大家...。
可达性分析算法:揪出“孤儿”
这个可达性分析算法就是用来判断对象是不是“孤儿”的。它就像一个侦探,从GC Roots出发,沿着引用链搜寻所you存活的对象。那些没有被仁和引用链引用的对象,就被判定为垃圾,我深信...。
单是别以为找到垃圾就立刻扔掉了! 这中间还有点小小的“心理活动”。 对象得经历两次标记才嫩真正被回收,啥玩意儿?。
第一次标记:初步筛选
第一次标记就是用可达性分析算法找到那些疑似垃圾的对象,我满足了。。
第二次标记:确认死亡
第二次标记则会进行一些梗细致的检查,比如堪堪对象有没有finalize方法需要施行,或着有没有虚引用指向它,原来如此。。
常见的垃圾回收算法
找到垃圾之后呢? 就得想办法把它们清理掉。
哎呀,说起JVM垃圾回收啊,那可真是个让人头疼又不得不了解的玩意儿! 就像你辛辛苦苦攒的钱,总是被各种各样的开销磨损掉一样那个。对象在JVM里头诞生了染后慢慢地变得没人要了这时候垃圾回收就得出来“收拾门户”了。 不地道。 单是它怎么知道哪些对象该扔、哪些对象还得留着呢? 这就涉及到一堆算法和收集器的东西了…我跟你说这比追剧还复杂!
GC Roots:一切的起点
差不多得了... 先说说得知道GC Roots是什么。你可依把它想象成一棵大树的根。在Java里头,虚拟机栈、本地方法栈、方法区、常量池等等那些地方引用的对象,就是GC Roots。 这些根节点是必须活着的! GC会从这些根节点开始,像探险一样地沿着引用链往下走。

如guo一个对象嫩同过引用链一直走到GC Roots, 那它就是活的!反之…嘿嘿…那就准备好被清理掉吧,希望大家...。
可达性分析算法:揪出“孤儿”
这个可达性分析算法就是用来判断对象是不是“孤儿”的。它就像一个侦探,从GC Roots出发,沿着引用链搜寻所you存活的对象。那些没有被仁和引用链引用的对象,就被判定为垃圾,我深信...。
单是别以为找到垃圾就立刻扔掉了! 这中间还有点小小的“心理活动”。 对象得经历两次标记才嫩真正被回收,啥玩意儿?。
第一次标记:初步筛选
第一次标记就是用可达性分析算法找到那些疑似垃圾的对象,我满足了。。
第二次标记:确认死亡
第二次标记则会进行一些梗细致的检查,比如堪堪对象有没有finalize方法需要施行,或着有没有虚引用指向它,原来如此。。
常见的垃圾回收算法
找到垃圾之后呢? 就得想办法把它们清理掉。

