我的应用程序显示了不同性能计数器的以下值。
我有两个问题。
我认为所有堆中的字节数代表.net内存使用量 所有堆积。如果这是正确的,那应该等于堆大小 Gen 0,1,2和大对象堆,这不是这种情况。
保留字节表示.net使用的可用内存 满足下一个分配要求。在那种情况下不应该保留 bytes总是大于提交的字节,而不是这种情况 这里。
有人可以解释我在这里误解了什么吗?
答案 0 :(得分:1)
问题1
Gen 0显示生成时可分配的最大字节数 0;它不表示当前分配的字节数 第0代。
因此#Bytes in all Heaps
等于Gen 1 heap size
,Gen 2 heap size
和Large Object heap size
。你可以做数学。
问题2
虚拟内存可以处于三种状态:
免。内存块没有引用它,可以分配。
保留。内存块可供您使用,不能用于任何其他分配请求。但是,你不能存储 数据到此内存块,直到它被提交。
所犯。内存块分配给物理存储。
因此# Total committed Bytes
是当前使用的内存总量,# Total reserved Bytes
是尚未提交(物理存储)的内存保留。
我理解这一点的方法是为您准备好保留字节,但物理存储尚未准备好接收您的数据。