Answers:
因此,基本上,其背后的算法是什么?
它基本上是一个标记和清除算法,“仅” 在一个单独的线程中同时运行。
至于关于该主题的研究论文:
据我了解,Java G1垃圾收集器使用所谓的堆区域来避免暂停整个世界。我看到的方式是,虽然其中一个区域被GC执行清除锁定,但内存分配是在另一个区域中完成的。
原理很简单:收集器将堆分成固定大小的区域,并跟踪这些区域中的实时数据。它将一组指针(“记住的集”)保留到区域中或从区域中移出。当认为有必要使用GC时,它将首先收集实时数据较少的区域(因此,“垃圾优先”)。通常,这意味着一步就可以收集整个区域:如果进入一个区域的指针数量为零,则不需要对该区域进行标记或扫描...