gpt4 book ai didi

c# - 实例化一个对象时,它是否都存储在内存中?

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

只是一个简短的问题,如果您的类只有一个 1 属性和许多(非静态)方法,那么每次您说“新对象()”时是否会存储一个全新的对象,或者只是属性,以及一些“公共(public)”内存空间中的方法,以便相同的类型可以引用它?

因此,就实例化时间而言,大类的性能是否总是比小类差?

最佳答案

内存分配可能确实很耗时。不过,我相信更清晰、更明显的资源消耗衡量标准是占用空间而不是实例化时间。

正如您已经说过的那样,方法就是这样,静态与否,只占用一次内存空间。 this 引用只是一个隐藏参数,它像任何其他参数一样从调用者发送到被调用代码,最后,所有方法都只是普通的函数(或例程)。

简单地说,所有静态字段也是如此。不要考虑属性。它们只是最终访问字段的方法的高级包装器。

实例字段是每个实例占用空间的内容。但是还有其他一些东西,比如运行时类型信息也会被分配。

总之,你的假设是正确的。

编辑

作为回顾:

  • 如果你所说的“大类”是指一个定义了很多方法的类,那么不,实例化时间不会受到影响。
  • 另一方面,如果用这个术语,你的意思是一个定义了很多实例字段的类,那么是的,实例化时间会受到影响。

虽然这不是我快乐的地方(我几乎不知道 ol' malloc 实际上如何很好地整理内存)认为分配大量内存需要更长的时间是很奇怪的方式我不能把我的手指,就像这样说

“将数字 1024 和 2048 相加比将数字 3 和 4 相加需要更长的时间”

(假设所有 4 个数字都存储在相同数字类型的变量中)。

所以我会更担心内存消耗。我确定时间也会受到某种影响,但可能对数

关于c# - 实例化一个对象时,它是否都存储在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744553/

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