我正在使用c#(.NET)中的套接字项目。我正在使用某些类(数据包)处理数据。当我正在寻找内存使用时,如果数据传入,它就会上升!即创建类。如何从内存中删除(手动)类和未使用的变量/类(不使用GC!)?
如果我尝试基本的东西,比如只收到数据,它会再次上升。此时,我想从内存完全删除/删除类/变量!
有人可以帮忙吗?
答案 0 :(得分:6)
你做不到。您无法在C#中手动删除对象。如果垃圾收集器没有自动执行此操作,那么您可能会在某处抓住该对象。使用分析器找出位置并修复代码。
答案 1 :(得分:2)
您无法手动执行此操作的好处和痛苦(在某些情况下)。即使强迫GC.Collect()
,也无法保证获得免费记忆。
另外,内存清理请求是请求,因此可能会有一些延迟,而不是立即发生。
所以CLR
中的唯一方法,,如果我们讨论的是.NET对象分配,清理内存是:清理你的对象,保留它们而不指向其他对象他们,
等待直至GC
将收集它们,如果愿意(取决于代)
手动调用GC.Collect()
,这不是建议的,但也可以使用,因为没有保证会清理内存。