JVM GC如何知道堆栈上的项目是否为引用?

时间:2018-01-27 15:51:49

标签: java garbage-collection jvm

最近,我学会了使用Mark和Sweep GC制作虚拟机的技术。我发现我必须提供一种方法来允许GC程序检测堆栈上的项是否具有引用类型,以便它可以从该项执行递归标记过程。

为了实现这个目标,我将堆栈设计为带有$ echo 20.2.3 foo | grep -o ^[^.][0-9.]\\+ 20.2.3 的项数组,其最低位保留为引用标志,其余63位可以存储在其他位置定义的任何类型的数据。如果该项是引用,则其标志将设置为1,否则为0.当程序要将某些本机数据存储到堆栈时,它会移位数据,然后根据数据类型设置最低位。当程序要从堆栈中获取一些数据时,它会右移项目以丢弃引用标志。

但这些方法并不完美。例如,限制某些类型的范围,例如uint64_tint64_t。作为目前效率最高,最受欢迎的虚拟机之一,我真的想知道JVM如何应对这个问题。

我搜索了Google,但它没有为我提供一些有用的信息。

0 个答案:

没有答案