gpt4 book ai didi

c# - GC.GetTotalMemory的使用及其返回值

转载 作者:行者123 更新时间:2023-11-30 17:15:07 24 4
gpt4 key购买 nike

我在磁盘上保存了一个大小为 15KB 的二进制文件,但为什么它的内存大小总是只有 4 个字节

long mem1=GC.GetTotalMemory(false);
Object[] array= new Object[1000000];
array[1]=obj; // obj is the object content of the file before it is saved on disk
long mem2=GC.GetTotalMemory(false);
long sizeOfOneElementInArray=(mem2-mem1)/1000000;

我在某个地方错了。我认为这是不正确的,因为 4 个字节甚至不足以存储一个 hello world 字符串,但为什么不正确。感谢您的帮助。

最佳答案

是否假设通过将 obj 分配给数组 o 中的索引 [1] 会占用大量字节?您所做的只是分配一个引用。不仅如此,new Object[1000000] 所做的只是创建一个数组(关联 1,000,000 个对象的空间和 Object[] 所需的内存。),而不是分配1,000,000 个对象。我相信有人可以详细说明正在使用的内部数据结构以及为什么会出现 4 个字节。

要认识到的关键是,将obj 分配给o[1] 并不是为obj 分配额外的内存。如果您尝试在分配 obj 之前确定近似调用 GC.GetTotalMemory,则在分配之后。在您的测试中,obj 在您调用第一个 GC.GetTotalMemory

之前已经分配

关于c# - GC.GetTotalMemory的使用及其返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com