gpt4 book ai didi

.NET 堆栈内存限制

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

我正在使用 C#、.NET 4.0、64 位。我需要在内存中存储 5 亿个用于计算的“数据点”。我需要决定是将它们创建为结构对象还是类对象。结构看起来要快得多。

堆栈有内存限制吗?如果可以,如何调整。

在堆栈上存储这么多数据会影响系统的整体性能吗?

(顺便说一句,我知道 .NET 中的单个对象大小限制,因此正在解决这个问题 - 数据将存储在多个集合中)。

最佳答案

你问错问题了。如果堆栈大小很重要,那么您做错了什么。

如果您使用许多数据点,您会将它们放在一个集合中,例如数组。数组总是在堆上分配。结构数组嵌入各个结构并形成连续的内存块。 (如果超过 2GB,则需要多个数组)。

而对于引用类型,数组将只包含引用,并且对象在堆上单独分配。一个堆分配大约有 16 个字节的开销,数组中的引用占了另外 8 个。
由于间接性,您还会获得更差的缓存局部性,并且 GC 必须做更多的工作来抓取所有这些引用。

我的结论是,如果你有很多小数据点,把它们做成一个结构,然后把它们放在一个数组中。

关于.NET 堆栈内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749453/

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