0

我正在使用 c# (.NET) 开发一个套接字项目。我正在处理一些类(数据包)的数据。当我查看数据传入时的内存使用情况时,它正在上升!即创建类。如何从内存中删除(手动)类和未使用的变量/类(不使用 GC!)?

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

有人可以帮忙吗?

4

2 回答 2

6

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

于 2013-03-19T13:07:23.160 回答
3

您不能手动执行此操作的好处和痛苦(在某些情况下)。即使强迫GC.Collect()您也不能保证获得空闲内存。

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

因此CLR如果我们在谈论 .NET 对象分配,清理内存的唯一方法是:清理您的对象,让它们没有其他对象指向它们,并且

  • 等到GC会收集它们,如果会(取决于世代)

  • 手动调用GC.Collect(),不建议使用,但也可以使用,顺便说一下不保证会清理内存。

进一步阅读:垃圾收集中的世代是什么?

于 2013-03-19T13:10:06.013 回答