gpt4 book ai didi

java - 垃圾收集器如何快速知道哪些对象不再引用它们?

转载 作者:IT王子 更新时间:2023-10-28 23:30:02 29 4
gpt4 key购买 nike

我知道在 Java 中,如果一个对象不再有任何对它的引用,垃圾收集器会在一段时间后回收它。

但是垃圾收集器如何知道一个对象有没有关联的引用呢?

垃圾收集器是否使用某种 hashmap 或表?


编辑:

请注意,我不是在问 gc 的工作原理。真的,我不是在问这个。

我要特别地询问 gc 如何高效地知道哪些对象是 Activity 的,哪些是死的。

这就是为什么我在我的问题中说 gc 维护某种 hashmap 或集合,并不断更新对象的引用数量?

最佳答案

典型的现代 JVM 使用几种不同类型的垃圾收集器。

一种常用于已存在一段时间的对象的类型称为 Mark-and-Sweep .它基本上涉及从已知的“Activity ”对象(所谓的垃圾收集根)开始,跟踪所有对象引用链,并将每个可达对象标记为“Activity ”。

完成此操作后,sweep 阶段可以回收那些尚未标记为“Activity ”的对象。

为了让这个过程正常工作,JVM 必须知道每个对象引用在内存中的位置。这是垃圾收集器成为 precise 的必要条件(Java 是)。

关于java - 垃圾收集器如何快速知道哪些对象不再引用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587868/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com