什么是“标记记忆”?

时间:2009-04-02 07:54:58

标签: memory

什么是“标记内存”以及它如何帮助减少程序大小?

4 个答案:

答案 0 :(得分:3)

您可能指的是tagged union,或者更具体地说是指LISP机器中使用的标记架构之类的硬件实现。基本上是一种存储带有类型信息的数据的方法。

在LISP机器中,这是通过使用较长的字长并使用一些额外的位来存储类型信息在内存中完成的。标签的处理和检查是在硬件中隐式完成的。

对于类型安全的C ++实现,请参阅boost:variant。

答案 1 :(得分:1)

不确定,但您可能指的是garbage collection,这是在运行程序时自动处理不再使用的对象的过程。

“标记内存”可以是mark-and-sweep的同义词,这是实现垃圾收集的最基本方法。

如果这一切都错了,请编辑您的问题以澄清。

答案 2 :(得分:1)

在从内核页面池分配内存时,Windows DDK使用“池标记”。每次分配需要4个字节的内存,但允许您标记(即标记)内核内存中可能有助于调试和检测内存泄漏的部分。

BTW我没有看到任何称为“标记内存”的东西会减少程序代码的大小。这听起来像是额外的工作,转化为“更多代码”和“更大的程序”。也许这意味着以某种方式减少内存占用?

答案 3 :(得分:0)

Here's更详细地介绍了如何将其用于垃圾收集的实现细节。您可能还想查看有关Tagged Pointers的维基百科文章。