面试题答案
一键面试- 未取消的Stream订阅:
- 原因:当一个Widget订阅了一个Stream,但在Widget销毁时没有取消订阅,Stream仍会持续发送数据,导致Widget及其相关资源无法被释放,因为Stream持有对Widget的引用,从而造成内存泄漏。
- 静态成员持有Widget引用:
- 原因:如果在静态变量或单例中持有Widget的引用,由于静态成员的生命周期与应用程序相同,Widget在被销毁时,因为静态成员的引用而无法被垃圾回收,进而引发内存泄漏。
- 动画未停止:
- 原因:启动了动画(如AnimationController),但在Widget销毁时未停止动画。动画会持续运行并持有对Widget的引用,使得Widget不能被正常回收,导致内存泄漏。