我应该自己打电话给析构函数

时间:2017-04-04 19:14:22

标签: c# azure memory-management destructor

如果我100%确定我将不再使用某个对象,无论哪个(或多大),作为一个有爱心的开发人员,一分钱捏我的方式进入天蓝色的托管,我应该调用它#39 ;我自己的析构函数还是我应该将它留给GC?

详细信息:

  • 我真的需要在机器上挤压尽可能多的应用程序
  • 我的应用程序已经在32位平台上以节省内存
  • 诊断显示响应时间受G.C.的影响很大。运行
  • 已经实施其他便士捏技术
  • 我不介意这样做,只打算为不在DI容器控件下的对象执行此操作

1 个答案:

答案 0 :(得分:2)

对象没有“析构函数”将释放对象使用的内存,严格来说 - 不,你不需要自己调用析构函数(即使你可以)实现你的目标。垃圾收集是唯一可以释放对象使用的内存的东西。

你应该做什么:

  • 处置IDisposable个对象
  • 在您认为可以接受的时候考虑强制GC。

其他想法:

  • 个人资料,以了解最集中收集的对象类型以及对GC施加压力的整体类型。
  • 考虑不要让对象在平均时间内保持活动状态(更喜欢非常短或非常长的生命周期),保持长期存在的对象不被修改(更喜欢完全不可变的对象长时间缓存值)
  • 阅读影响GC效率的其他因素(如固定缓冲区)。