强制从内存中删除对象

Nei*_*ir0 0 c# java garbage-collection

即使它有引用(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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想从内存中删除_person我该怎么办?

Bri*_*new 11

你不能简单地说.

如果你想要实现类似的东西,你可以Person通过代理引用你的,并传递代理.因此,您可以将基础Person引用设置为null(只是指示该对象可用于删除 - 强制删除它),但客户端仍将包含代理引用.

您可能想要查看相关的Java SoftReferences和WeakReferences,并且可以在垃圾回收周期中删除对象,尽管其他地方可以使用弱/软引用.