【问题标题】:LOH internals wantedLOH 内部需要
【发布时间】:2011-04-20 04:25:42
【问题描述】:

我知道,这是一个实现细节,有些人认为禁止对它们感兴趣。但我仍然想找到以下内容的参考和确认:

  1. 大对象堆维护一个段中空洞的空闲列表。它使用它来满足大对象的分配请求。这是否也意味着这样的分配可能比来自小对象堆的常规(仅分配指针增加)分配更昂贵? Reference

  2. 在 32 位进程上,段大小的下限为 16MB。 64 位进程的大小限制是多少?

备注:此问题不要求正确的对象设计(池)解决方案。

【问题讨论】:

  • 我不记得我在哪里读到它了——这就是为什么这是评论而不是答案——是的,进行 LoH 分配可能比 Gen1 分配更昂贵。但是尝试压缩大对象(从 Gen1 升级到 Gen2)会非常昂贵。
  • 您是否通过 C# 检查过 CLR?我认为里希特在那里谈过。
  • @Conrad:没有 Gen1 分配之类的东西。对象在 Gen0 或 LOH 中分配。
  • @Brian 我开始写 Gen0,然后担心有人会纠正我并称之为 Gen 1。我想我想多了。 :)

标签: .net clr large-object-heap


【解决方案1】:

我刚刚在VMMap的帮助下发现了问题的第二部分:

最小段大小

在 32 位上(在 MS 博客中也有报道):

Initial segment size for Gen 0,1,2:       16 MB   
Initial segment size for LOH:             16 MB  
Size for larger LOH chunks:multiples of    8 MB  

64位(试了才知道):

Initial segment size for Gen 0,1,2:      256 MB  
Initial segment size for LOH:            128 MB  
Size for larger LOH chunks: multiples of 128 MB  

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2017-01-04
    • 1970-01-01
    • 2018-02-08
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多