【发布时间】:2009-10-02 07:51:54
【问题描述】:
所以我只是在测试来自微软的CLR Profiler,我做了一个小程序,创建了一个包含 1,000,000 个双精度数的列表。我检查了堆,结果 List 大小约为 124KB(我不记得确切,但大约是那个)。这真的震撼了我的世界,如果它有 100 万个双精度,它怎么可能是 124KB?无论如何,在那之后我决定检查一个双[1000000]。令我惊讶的是(并不是真的,因为这是我对 List =P 的预期),数组大小为 7.6MB。差别很大!!
他们为什么不一样? List 如何管理它的项目,它是如此(令人难以置信)的内存效率?我的意思是,其他 7.5 mb 并不像其他地方一样,因为在我创建了 100 万个双打之后,应用程序的大小大约大了 3 或 4 KB。
【问题讨论】:
-
您的意思是“应用程序的大小大约大 3 或 4 KB”。数组是动态分配的,因此结果 exe 文件无关紧要。而是查看任务管理器“Mem Usage”参数
标签: c# .net arrays generic-list