脚本运行时垃圾回收正常却频繁卡顿时应如何检查原生资源生命周期
简答题困难429 次浏览
参考答案与解析
核心结论:跨端应用的内存问题不能只观察脚本堆。WebView、React Native、Flutter 和自研混合框架通常同时持有脚本对象、原生对象、位图、纹理、文件映射、网络缓冲区与系统句柄。即使脚本垃圾回收日志正常,原生引用环、未释放纹理、缓存无上限或跨边界句柄滞留,仍可能造成内存阶梯式增长,并通过系统回收、缺页、纹理上传或进程终止表现为卡顿。定位时必须建立跨运行时的对象所有权与释放证据链。
底层机制与决策依据:脚本对象被回收只表示脚本堆中不可达,并不保证其关联的原生资源已经释放。桥接层可能通过全局注册表、回调、观察者、定时器或异步任务继续持有原生对象;位图的压缩大小也不等于解码后的内存大小;图形纹
