加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

来自JVM的魂灵拷问:“你是什么垃圾?”

发布时间:2019-08-12 17:00:13 所属栏目:站长百科 来源:Isabella
导读:作者:iMononoke 博客:https://juejin.im/user/5c629a3051882562191755d8 GC是啥? GC是一种自动的存储打点机制。当一些被占用的内存不再必要时,就应该予以开释。这种存储资源打点,称为垃圾接纳。 就僻静时你整理桌面,清算对象一样,许多人都见过听过一
副问题[/!--empirenews.page--]

作者:iMononoke

博客:https://juejin.im/user/5c629a3051882562191755d8

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

GC是啥?

GC是一种自动的存储打点机制。当一些被占用的内存不再必要时,就应该予以开释。这种存储资源打点,称为垃圾接纳。

就僻静时你整理桌面,清算对象一样,许多人都见过听过一个理念“断舍离”吧,不会行使到的物品可以捐赠给其他人可能作为可接纳物品被接纳掉,许多时辰我们存着一些物品,可是好几年都没有效到它们,只是想着也许什么时辰会用到,这样一向占有实在际的“内存”。

“脏乱差”

来自JVM的魂灵拷问:“你是什么垃圾?”

“干净~”

来自JVM的魂灵拷问:“你是什么垃圾?”


来自JVM的魂灵拷问:“你是什么垃圾?”

来自JVM的魂灵拷问:“你是什么垃圾?”

还“在世”吗?

在0-1的天下里,所谓“垃圾接纳”,就是指收回那些不行能再被任何途径行使的工具所占的内存空间,开释了这些内存可以给必要的工具行使。

那么JVM里是怎么来分的?可能说哪些工具是必要被接纳的?

首要是问一句:还“在世”吗?

要接纳,先要判定是不是可以接纳,就是这个工具还“在世”吗?

首要有两种算法来判定:

  • 引用计数法
  • 可达性说明法。

列个表看看~

来自JVM的魂灵拷问:“你是什么垃圾?”

引用计数法

最大的题目,是很难办理工具之间相互引用的环境。

一图胜千言。

1 相互引用

来自JVM的魂灵拷问:“你是什么垃圾?”

这是两个工具相互引用的环境,除此之外,这两个工具再无引用,但由于它们的引用计数不为0,以是引用计数器无法关照GC网络器接纳它们。

2 轮回引用

来自JVM的魂灵拷问:“你是什么垃圾?”

这是轮回引用的环境,没有外部引用指向它们,但它们的引用计数不为0,就无法举办接纳了。

来自JVM的魂灵拷问:“你是什么垃圾?”

好比一把椅子的靠背坏了,椅子的轮子照旧好的,但这轮子不能拆下来挪为他用,以是椅子的靠背和它的轮子是相互引用的,可是除了它们本身,没有外界引用它们了。

这样的环境用“引用计数法”来判定的话,它们照旧不消被接纳的,但现实它们都没有行使浸染了。

以是主流的jvm都不行使引用计数法来打点内存,而是回收下面的可达性说明法,下图是它的根基思绪表示图。

  • 可达性说明法

来自JVM的魂灵拷问:“你是什么垃圾?”

由图可知,object5、object6和object7都没有到GCRoots工具的引用链,它们城市被接纳。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读