在具有自动垃圾回收的语言(例如Haskell或Go)中,垃圾回收器如何找出存储在堆栈中的哪些值是指向内存的指针,而哪些只是数字?如果垃圾收集器仅扫描堆栈并假定所有地址都是对对象的引用,则许多对象可能会被错误地标记为可访问。
显然,可以在每个堆栈帧的顶部添加一个值,该值描述了接下来的指针中有多少个值,但这是否会花费很多性能呢?
在现实中是如何做到的?
慕田峪9158850
万千封印
相关分类