在像C++这样的非托管语言中,我可以使用delete
运算符来删除对象。但是.NET平台是被管理的,所以只有垃圾收集器可以从内存中删除对象。我们只能删除对象的所有引用,并且垃圾收集器会在某个时间收集它。但是我想要执行对象的即时删除。是否有可能在.NET中手动删除对象?
有没有办法使用C++库删除对象?主要思想:使用mscoree.dll
使用DllImport
属性
删除对象
- 创建C++库
- 定义方法
DeleteUnsafe(void* pointer)
是否有可能进行第二步?或者用其他方式来实现我的目标?什么是起点?是否可以在不破坏CLR的情况下执行?例如,GC会尝试收集已经删除的对象。我们如何从GC队列中删除对象?
'GC.Collect()'是最接近你会得到,但你需要一个非常好的理由骚扰内置的垃圾收集机制。你想要这么做的理由是什么? – 2014-09-12 11:42:36
“我想执行对象的即时删除”。你确定你需要吗?为什么? – spender 2014-09-12 11:43:23
@AlexK。假设我想要编写替代垃圾回收器 – 2014-09-12 11:44:15