我正在使用 CLR 分析器检查我的程序的内存使用情况,并且我关心 LOH 分配。基本上,我将 10 个大小为 1 mb 的文件并行分配给 Azure 数据湖服务文件(使用 concurrentAppend API)。理论上,LOH 大小应该是 10 mb,对吧?在报告预览中(图片 1)-> 我看到 LOH 堆字节为 3.195 MB。当我按地址检查对象时(图 2)-> LOH 分配正好 10 MB(我通过在 LOH 栏上运行光标进行检查,发现 10 个地址,每个地址都有 1 mb system.byte[] 数据。
那么为什么我在预览报告中得到 3.199 MB?