假设我创建了一个类,它导致对象使用大量内存,但没有非托管资源:
class TestMemory
{
public int[] intarray = new int[1000000];
}
通常,如果我创建这个类的一个对象,并在使用后丢弃对该对象的所有引用,垃圾收集器最终会负责释放内存。
问题是垃圾收集器何时会这样做是不确定的。垃圾收集器释放内存可能需要几秒钟,甚至几分钟
假设我想经常重新创建这个对象,例如像这样(我知道,效率最高):
for (int i=0; i < 1E10; ++i)
{
List<TestMemory> myList = new List<TestMemory>();
for (int j=0; j < 400; ++j)
{
myList.Add(new TestMemory());
}
}
我是否应该担心内存不足,或者当请求的内存超过当前可用的内存时,垃圾收集器会执行额外的收集吗?为这个托管代码实现 IDisposable 是否明智?