【问题标题】:How much objects can we create in 32-bits systems?我们可以在 32 位系统中创建多少对象?
【发布时间】:2016-08-30 06:19:16
【问题描述】:

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

【问题讨论】:

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

标签: .net memory-management heap-memory


【解决方案1】:
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 转换的数学运算。

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 2012-05-09
    • 2011-11-15
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多