我应该自己调用析构函数吗
Should I call destructor by myself
如果我 100% 确定我将不再使用一个对象,无论它是哪个(或多大),作为一个有爱心的开发人员,我是否应该通过以下方式调用它的析构函数我自己还是应该离开它,将其委托给 G.C?
详情:
- 我真的需要在一台机器上挤尽可能多的应用程序
- 我的应用程序已经在 32 位平台上以节省内存
- 诊断显示响应时间受 G.C 的影响很大。 运行
- 已经实施其他省钱技术
- 不介意做,只打算对不在DI容器控制下的对象做
没有 "destructor" 的对象会 释放对象使用的内存 ,所以严格来说 - 不,你不需要调用析构函数自己(即使你可以)实现你的目标。垃圾收集是唯一真正可以释放对象使用的内存的东西。
你应该做什么:
- 处理
IDisposable
个对象
- 在您认为可以接受的时候考虑强制执行 GC。
其他想法:
- 配置文件以了解哪种类型的对象被收集最多以及总体上哪些类型对 GC 造成压力。
- 考虑不要让对象在平均时间内保持活动状态(更喜欢非常短或非常长的生命周期),保持长期存在的对象不被修改(更喜欢完全不可变的对象而不是长时间缓存值)
- 阅读影响 GC 有效性的其他因素(如固定缓冲区)。
如果我 100% 确定我将不再使用一个对象,无论它是哪个(或多大),作为一个有爱心的开发人员,我是否应该通过以下方式调用它的析构函数我自己还是应该离开它,将其委托给 G.C?
详情:
- 我真的需要在一台机器上挤尽可能多的应用程序
- 我的应用程序已经在 32 位平台上以节省内存
- 诊断显示响应时间受 G.C 的影响很大。 运行
- 已经实施其他省钱技术
- 不介意做,只打算对不在DI容器控制下的对象做
没有 "destructor" 的对象会 释放对象使用的内存 ,所以严格来说 - 不,你不需要调用析构函数自己(即使你可以)实现你的目标。垃圾收集是唯一真正可以释放对象使用的内存的东西。
你应该做什么:
- 处理
IDisposable
个对象 - 在您认为可以接受的时候考虑强制执行 GC。
其他想法:
- 配置文件以了解哪种类型的对象被收集最多以及总体上哪些类型对 GC 造成压力。
- 考虑不要让对象在平均时间内保持活动状态(更喜欢非常短或非常长的生命周期),保持长期存在的对象不被修改(更喜欢完全不可变的对象而不是长时间缓存值)
- 阅读影响 GC 有效性的其他因素(如固定缓冲区)。