我在思考回收物品的方法时产生了这个想法。我这样做是为了看看内存池是如何工作的,我意识到在 99% 的情况下这是非常不必要的。
但是,我有一个问题。有没有办法强制 GC 保留对象?换句话说,我可以告诉 GC 不要销毁一个对象,而是说在一个列表中创建了一个新的引用来保存可使用的对象吗?问题是,虽然我没有对此进行测试,但如果我将这样的内容添加到列表中:
~myObject()
{
((List<myObject>)HttpContext.Current.Items[typeof(T).ToString()]).add(this);//Lets assume this is ASP
}
它会将指向该对象的指针添加到列表中,但如果该对象被销毁,我将得到一个空指针异常,因为该对象不再存在。但是,也许我可以告诉 GC 不要收集这个项目,从而保留这个对象?
我知道这是大多数程序员会去的那种东西“你为什么要这样做?”。但另一方面,编程是关于尝试新事物和学习新事物。有什么建议、想法、实施吗?任何帮助将不胜感激!