Visual Studio Xamarin Forms诊断工具:内存对象减少是否代表垃圾回收已执行?
Xamarin Forms诊断工具:对象差值下降是否等于GC已运行?
结论:大概率是GC运行导致,但不能完全绝对判定
- 先搞懂「对象(差值)」的含义:这个数值是新增对象数减去被回收对象数的结果。当它下降时,说明被回收的对象数量超过了新创建的对象数——这正是GC运行的典型表现:GC会标记并清理掉不再被引用的对象,存活对象数量减少,差值自然会下降。
- 但存在极少数例外情况:比如手动释放了非托管资源(Xamarin中以托管对象为主,但偶尔会涉及非托管资源),或者内存统计出现临时波动,但这类情况非常少见。
- 想要精准验证的话,可以直接查看诊断工具中的GC事件日志,或者在代码中手动调用
GC.Collect()触发GC,对比前后的对象差值变化,就能确认是否是GC导致的数值下降。

内容的提问来源于stack exchange,提问作者Samuel James
相关产品推荐
相关产品推荐

