gpt4 book ai didi

c# - 创建新类或结构时 .NET 中的内存使用情况

转载 作者:IT王子 更新时间:2023-10-28 23:30:53 34 4
gpt4 key购买 nike

Int 的大小为 4 个字节,如果我在我的程序中创建一个新的 Int,它的内存消耗会增加 4 个字节。对吧?

但如果我有这门课

public class Dummy{
private int;
}

我的新类(class)将使用多少内存?如果它是一个结构,内存消耗会更低吗?我认为 reference 本身也会消耗一些内存。

最佳答案

单个 引用在 32 位进程上占用 4 个字节,在 64 位进程上占用 8 个字节。引用是类的标准开销(因为它们是引用类型)。结构不会引起引用(好吧,忽略任何潜在的装箱)并且通常是其内容的大小。我不记得类是否有更多开销,不要这么认为。

这个问题深入探讨了类与结构(也在问题评论中提供):

Does using "new" on a struct allocate it on the heap or stack?

如评论中所述,只有类的实例才会消耗此引用开销,并且只有在某处有引用时才会消耗。当没有引用时,该项目有资格进行 GC - 我不确定没有任何引用的堆上类的大小,我认为它是其内容的大小。

确实,类没有您可以依赖的真正“大小”。 最重要的是这不应该是使用类或结构的决定因素(但您往往会发现指南指出大约 16 字节或以下的类型可能是合适的结构,及以上倾向于类)。对我来说,决定因素是预期用途。

说到结构,我觉得有必要提供以下链接:Why are mutable structs “evil”?

关于c# - 创建新类或结构时 .NET 中的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402787/

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