c# - 强制从内存中删除对象

标签 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;
    }
}

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

最佳答案

简单地说,你不能。

如果您确实想实现类似的目标,您可以通过代理引用您的Person,并传递代理。因此,您可以将基础 Person 引用设置为 null(仅表明该对象可用于删除 - 强制删除),但客户端仍将包含代理引用。

您可能想查看Java SoftReferences and WeakReferences ,它们是相关的,并且可以在垃圾收集周期中丢弃对象,尽管它们的弱/软引用在其他地方可用。

关于c# - 强制从内存中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16607365/

相关文章:

java - 从 Groovy 中的 List<WebElement> 获取文本

java - 错误 : "Syntax error on token " ;", , expected" Why?

haskell - Haskell是否有内在的“垃圾成本”?

java GC CMS-initial-mark 减慢对高负载 tomcat 生产服务器的查询

c# - 将嵌套的 XML 元素反序列化为 C# 中的类

c# - 如何从 XML 中按属性删除特定节点?

java - 当设备锁定时,WorkManager 多次调用 doWork() 方法

c# - 如何从 System.Diagnostics.Process 停止进程并最终获取统计信息

c# - 'Amazon.S3.AmazonS3Client' 的类型初始值设定项抛出异常

使用大部分堆的 Android 应用程序,无法成功识别内存泄漏