.net 我们可以在32位系统中创建多少对象?

.net 我们可以在32位系统中创建多少对象?,.net,memory-management,heap-memory,.net,Memory Management,Heap Memory,在.NET中,一个对象需要12个字节才能存在,8个字节用于头,4个字节用于引用。假设我们希望创建32位系统可以处理的最大12字节对象数(忽略100%的开销)。这个最大值可能是多少? 我读过 我们可以创建1.7亿个对象,但正如我所知,32位系统最多可以管理4次ram,我不知道1.7亿个对象是从哪里来的 1,024 MB = 1 GB 2 GB = 2,048 MB 2,048 MB * 1,024 = 2,097,152 KB 2,097,152 KB * 1024 = 2,147,483,64

在.NET中,一个对象需要12个字节才能存在,8个字节用于头,4个字节用于引用。假设我们希望创建32位系统可以处理的最大12字节对象数(忽略100%的开销)。这个最大值可能是多少? 我读过 我们可以创建1.7亿个对象,但正如我所知,32位系统最多可以管理4次ram,我不知道1.7亿个对象是从哪里来的

1,024 MB = 1 GB

2 GB = 2,048 MB
2,048 MB * 1,024 = 2,097,152 KB
2,097,152 KB * 1024 = 2,147,483,648 B

2,147,483,648 B / 12 = 178,956,970 170million (ish)
正如文章所指出的,其中有一些开销,这种大小的对象实际上是无用的。但无论如何,上面是GB->B/12转换的数学


正如文章所指出的,其中有一些开销,这种大小的对象实际上是无用的。但不管怎样,上面是GB->B/12转换的数学公式。

这些数字非常无用,你为什么需要知道?也许有一个更好的答案来回答这个潜在的问题。我试图找出什么是减少间接费用的最好方法。由于增加数据字节意味着拥有一个包含大量字段的类,这增加了类的复杂性,因此我想知道是否存在可容忍的开销,或者这取决于内存管理需求?您很可能不必担心这种开销,而是按照您希望的方式设计类。如果你有大规模的数据问题,你可能无论如何都应该转移到64位。这些数字是非常无用的,为什么你需要知道呢?也许有一个更好的答案来回答这个潜在的问题。我试图找出什么是减少间接费用的最好方法。由于增加数据字节意味着拥有一个包含大量字段的类,这增加了类的复杂性,因此我想知道是否存在可容忍的开销,或者这取决于内存管理需求?您很可能不必担心这种开销,而是按照您希望的方式设计类。如果您有大规模的数据问题,您可能会转移到64位。