【发布时间】:2018-03-15 02:21:05
【问题描述】:
从 .NET 的 Stack<T> 弹出项目是否会减少该堆栈的内存使用量?
MSDN 说 Stack<T> 是作为一个数组实现的,所以我猜想通过弹出一个项目,只有顶部元素的指针会移动到前一个元素,保持所有元素不变。
有人知道吗?
【问题讨论】:
-
每次添加/删除元素时不断调整数组大小会不会很昂贵?
-
当您在自己的应用程序中实际从堆栈中删除项目时发生了什么?内存使用量下降了吗?
-
不,只有 TrimExcess() 这样做。它有一个好名字。不要经常使用它,它很贵。
-
据我所知,它不会缩小到更小的尺寸,它只会将指针向后移动(至少在没有 TrimExcess() 的 List
中会发生这种情况)。不过,我很想听听更多。
标签: c# .net memory-management stack