gpt4 book ai didi

c# - 为什么 32 位 .NET 进程的引用类型的最小大小为 12 字节

转载 作者:行者123 更新时间:2023-11-30 20:46:55 25 4
gpt4 key购买 nike

我正在阅读 Pro .Net Performance关于引用类型内部的书籍部分。它提到对于 32 位 .net 进程,引用类型具有 4 个字节的对象 header 和 4 个字节的方法表指针。此外,表示在 32 位系统上,对象对齐到最接近的 4 字节倍数,这使得引用类型的最小大小为 12 字节。

我的问题是,为什么最小大小是 12 字节?该对象为 8 字节,并且已经与 4 字节边界对齐。

最佳答案

垃圾收集实现的要求是最少 12 个字节。

来自这里:http://msdn.microsoft.com/en-us/magazine/cc163791.aspx#S9

The Base Instance Size is the size of the object as computed by the class loader, based on the field declarations in the code. As discussed previously, the current GC implementation needs an object instance of at least 12 bytes. If a class does not have any instance fields defined, it will carry an overhead of 4 bytes. The rest of the 8 bytes will be taken up by the Object Header (which may contain a syncblk number) and TypeHandle.

(TypeHandle 是方法表的句柄)。

关于c# - 为什么 32 位 .NET 进程的引用类型的最小大小为 12 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26291696/

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