You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PopupLayout出现内存泄漏?怀疑与SelectionContainer相关求解决方案

关于PopupLayout内存泄漏的排查求助

我遇到了PopupLayout内存泄漏问题,通过LeakCanary检测到存在应用泄漏,目前怀疑该问题与SelectionContainer有关,但无法确定具体原因也找不到解决办法,以下是LeakCanary的堆分析日志:

D/LeakCanary: 发现2条指向保留对象的引用路径
D/LeakCanary: 分析进行中,完成50%,正在检查对象
D/LeakCanary: 分析进行中,完成60%,正在计算Native保留内存大小
D/LeakCanary: 分析进行中,完成70%,正在计算保留内存大小
I/iq.mliq.: 后台并发复制GC释放了1217073个(30MB)分配空间对象,1个(516KB)大对象空间(LOS)对象,内存使用率71%,剩余58MB/总82MB,暂停时间50us,总耗时129.711ms
D/LeakCanary: 分析进行中,完成80%,正在构建泄漏引用链
D/LeakCanary: 分析进行中,完成90%,正在上报堆分析结果
V/SQLiteDatabase: triggerBuildingIndex(): 无效ID,返回。
D/LeakCanary: ​
D/LeakCanary: ====================================
D/LeakCanary: 堆分析结果
D/LeakCanary: ====================================
D/LeakCanary: 1处应用泄漏
D/LeakCanary: 
D/LeakCanary: 带下划线"~~~"的引用是可能的泄漏原因。
D/LeakCanary: 
D/LeakCanary: 泄漏对象保留了60230字节内存
D/LeakCanary: 仅显示2条相同签名引用链中的1条
D/LeakCanary: 签名: 6b9af3bfc8523409a555c9e53bc41c4a631fd096
D/LeakCanary: ┬───
D/LeakCanary: │ GC根节点: Thread对象
D/LeakCanary: │
D/LeakCanary: ├─ android.os.HandlerThread实例
D/LeakCanary: │    未泄漏: 否 (PathClassLoader↓ 未泄漏)
D/LeakCanary: │    线程名称: 'plumber-android-leaks'
D/LeakCanary: │    ↓ Thread.contextClassLoader
D/LeakCanary: ├─ dalvik.system.PathClassLoader实例
D/LeakCanary: │    未泄漏: 否 (SnapshotKt↓ 未泄漏,且ClassLoader永远不会泄漏)
D/LeakCanary: │    ↓ ClassLoader.runtimeInternalObjects
D/LeakCanary: ├─ java.lang.Object[] 数组
D/LeakCanary: │    未泄漏: 否 (SnapshotKt↓ 未泄漏)
D/LeakCanary: │    ↓ Object[1891]
D/LeakCanary: ├─ androidx.compose.runtime.snapshots.SnapshotKt 类
D/LeakCanary: │    未泄漏: 否 (Recomposer↓ 未泄漏,且类永远不会泄漏)
D/LeakCanary: │    ↓ 静态字段 SnapshotKt.applyObservers
D/LeakCanary: ├─ java.util.ArrayList实例
D/LeakCanary: │    未泄漏: 否 (Recomposer↓ 未泄漏)
D/LeakCanary: │    ↓ ArrayList[6]
D/LeakCanary: ├─ androidx.compose.runtime.Recomposer$recompositionRunner$2$unregisterApplyObserver$1实例
D/LeakCanary: │    未泄漏: 否 (Recomposer↓ 未泄漏)
D/LeakCanary: │    kotlin.jvm.internal.Lambda的匿名子类
D/LeakCanary: │    ↓ Recomposer$recompositionRunner$2$unregisterApplyObserver$1.this$0
D/LeakCanary: ├─ androidx.compose.runtime.Recomposer实例
D/LeakCanary: │    未泄漏: 否 (CompositionImpl↓ 未泄漏,且Recomposer处于Idle状态)
D/LeakCanary: │    ↓ Recomposer._knownCompositions
D/LeakCanary: ├─ java.util.ArrayList实例
D/LeakCanary: │    未泄漏: 否 (CompositionImpl↓ 未泄漏)
D/LeakCanary: │    ↓ ArrayList[7]
D/LeakCanary: ├─ androidx.compose.runtime.CompositionImpl实例
D/LeakCanary: │    未泄漏: 否 (Composition未被销毁)
D/LeakCanary: │    ↓ CompositionImpl.composer
D/LeakCanary: │                      ~~~~~~~~
D/LeakCanary: ├─ androidx.compose.runtime.ComposerImpl实例
D/LeakCanary: │    泄漏状态: 未知
D/LeakCanary: │    保留了73.8 kB内存,涉及1511个对象
D/LeakCanary: │    ↓ ComposerImpl.insertTable
D/LeakCanary: │                   ~~~~~~~~~~~
D/LeakCanary: ├─ androidx.compose.runtime.SlotTable实例
D/LeakCanary: │    泄漏状态: 未知
D/LeakCanary: │    保留了37 B内存,涉及1个对象
D/LeakCanary: │    ↓ SlotTable.slots
D/LeakCanary: │                ~~~~~
D/LeakCanary: ├─ java.lang.Object[] 数组
D/LeakCanary: │    泄漏状态: 未知
D/LeakCanary: │    保留了68.3 kB内存,涉及1456个对象
D/LeakCanary: │    ↓ Object[106]
D/LeakCanary: │            ~~~~~
D/LeakCanary: ╰→ androidx.compose.ui.window.PopupLayout实例
D/LeakCanary: ​     泄漏状态: 是 (ObjectWatcher监测到此对象,因为androidx.compose.ui.window.PopupLayout收到了
D/LeakCanary: ​     View#onDetachedFromWindow()回调)
D/LeakCanary: ​     保留了30.1 kB内存,涉及606个对象
D/LeakCanary: ​     key = 85e935b6-558c-42b2-bb1a-ed54d592fba7
D/LeakCanary: ​     监测时长(毫秒): 6822
D/LeakCanary: ​     保留时长(毫秒): 1821
D/LeakCanary: ​     View不属于窗口视图层级
D/LeakCanary: ​     View.mAttachInfo为null (视图已脱离)
D/LeakCanary: ​     View.mID = R.id.null
D/LeakCanary: ​     View.mWindowAttachCount = 1
D/LeakCanary: ​     mContext是ac.mdiq.mliq.elements.EditActivity的实例,且mDestroyed = false
D/LeakCanary: ====================================
D/LeakCanary: 0处库泄漏
D/LeakCanary: 
D/LeakCanary: 库泄漏是由第三方代码中的已知Bug导致的,你无法控制此类问题。
D/LeakCanary: ====================================
D/LeakCanary: 0处不可达对象
D/LeakCanary: 
D/LeakCanary: 不可达对象仍在内存中,但LeakCanary无法找到从GC根节点出发的强引用路径
D/LeakCanary: ====================================
D/LeakCanary: 元数据
D/LeakCanary: 
D/LeakCanary: 提交Bug报告或Stack Overflow问题时请包含此部分内容。

内容的提问来源于stack exchange,提问作者LXJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:07:04