gpt4 book ai didi

C# 对象大小开销

转载 作者:太空狗 更新时间:2023-10-29 18:04:03 24 4
gpt4 key购买 nike

我正在致力于优化内存消耗应用程序。与此相关,我对 C# 引用类型大小开销有疑问。

C# 对象消耗与其字段一样多的字节,加上一些额外的管理开销。我认为不同的 .NET 版本和实现的管理开销可能不同。

您知道 C# 对象(C# 4.0 和 Windows 7 和 8 环境)的管理开销的大小(如果开销是可变的,则最大大小)是多少?

32 位或 64 位 .NET 运行时的管理开销是否不同?

最佳答案

通常,GC 分配的每个对象有 8 或 12 字节的开销。 syncblk 有 4 个字节,32 位运行时有 4 个字节用于类型句柄,64 位运行时有 8 个字节。有关详细信息,请参阅 Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects 的“ObjectInstance”部分在 MSDN 杂志上。

请注意,实际引用在 32 位或 64 位 .NET 运行时也会发生变化。

此外,可能会有类型填充以适应地址边界,尽管这在很大程度上取决于所讨论的类型。这也可能导致对象之间出现“空白”,但这取决于运行时(大多数情况下,尽管您可以使用 StructLayoutAttribute 影响它)来确定何时以及如何对齐数据。

关于C# 对象大小开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286421/

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