从内存中删除类/变量实例(完全)

时间:2013-03-19 13:04:47

标签: c# class memory memory-management instance

我正在使用c#(.NET)中的套接字项目。我正在使用某些类(数据包)处理数据。当我正在寻找内存使用时,如果数据传入,它就会上升!即创建类。如何从内存中删除(手动)类和未使用的变量/类(不使用GC!)?

如果我尝试基本的东西,比如只收到数据,它会再次上升。此时,我想从内存完全删除/删除类/变量

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:6)

你做不到。您无法在C#中手动删除对象。如果垃圾收集器没有自动执行此操作,那么您可能会在某处抓住该对象。使用分析器找出位置并修复代码。

答案 1 :(得分:2)

无法手动执行此操作的好处和痛苦(在某些情况下)。即使强迫GC.Collect(),也无法保证获得免费记忆。

另外,内存清理请求是请求,因此可能会有一些延迟,而不是立即发生。

所以CLR中的唯一方法,,如果我们讨论的是.NET对象分配,清理内存是:清理你的对象,保留它们而不指向其他对象他们,

  • 等待直至GC将收集它们,如果愿意(取决于代)

  • 手动调用GC.Collect(),这不是建议的,但也可以使用,因为没有保证会清理内存。

进一步阅读:what are the Generations in Garbage Collection?