即使对象有引用(C# 或 Java),我如何删除它?
例如:
void Main()
{
var f = new Foo();
var person = f.GetPerson();
}
public class Foo
{
private object _person;
public Foo()
{
_person = new object();
}
public object GetPerson()
{
return _person;
}
}
我想从内存中删除_person,我该怎么做?
最佳答案
简单地说,你不能。
如果您确实想实现类似的目标,您可以通过代理引用您的Person
,并传递代理。因此,您可以将基础 Person 引用设置为 null(仅表明该对象可用于删除 - 不强制删除),但客户端仍将包含代理引用。
您可能想查看Java SoftReferences and WeakReferences ,它们是相关的,并且可以在垃圾收集周期中丢弃对象,尽管它们的弱/软引用在其他地方可用。
关于c# - 强制从内存中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16607365/