我想到了回收对象的方法时就明白了。我正在做这个实验,看看内存池是如何工作的,我意识到在99%的情况下这是非常不必要的。在GC销毁尝试中保留对象
但是,我有一个问题。有没有办法强制GC保留对象?换句话说,我可以告诉GC不要销毁一个对象,而是说在一个列表中创建了一个新的引用,该列表保存了可供使用的对象?这个问题,虽然我没有测试过这一点,就是如果我增加一些像这样的列表:
~myObject()
{
((List<myObject>)HttpContext.Current.Items[typeof(T).ToString()]).add(this);//Lets assume this is ASP
}
它将一个指针到该对象到列表中,但如果对象被毁灭,那么我会得到空指针异常,因为对象不再存在。但是,也许我可以告诉GC不要收集这个项目,从而保持对象?
我知道这是大多数程序员会去的东西的类型,“为什么你会这样做?”。但另一方面,编程则是尝试新事物和学习新事物。任何建议,想法和实施?任何帮助将不胜感激!
SuppressFinalize只是取消运行析构函数,而不是集合。 KeepAlive更好,但你必须把它称为某个地方,而不是实际的。 –