Realme RMX3501(Android13)Activity内存泄漏问题咨询
内存泄漏问题分析:Realme RMX3501 Android 13特定固件异常
在Realme RMX3501(C31)的Android 11系统及其他设备上未出现内存泄漏,但搭载RMX3501_13.F.54固件的Android 13系统中,Activity每次调用onDestroy时都会发生内存泄漏。
泄漏日志
│ GC Root: Global variable in native code │ ├─ android.database.ContentObserver$Transport instance │ Leaking: UNKNOWN │ Retaining 822 B in 9 objects │ ↓ ContentObserver$Transport.mContentObserver │ ~~~~~~~~~~~~~~~~ ├─ android.view.WindowManagerImpl$ThreeFingerObserver instance │ Leaking: UNKNOWN │ Retaining 286 B in 8 objects │ ↓ WindowManagerImpl$ThreeFingerObserver.this$0 │ ~~~~~~ ├─ android.view.WindowManagerImpl instance │ Leaking: UNKNOWN │ Retaining 78 B in 3 objects │ mContext instance of android.app.ContextImpl │ ↓ WindowManagerImpl.mContext │ ~~~~~~~~ ├─ android.app.ContextImpl instance │ Leaking: YES (ContextImpl.mOuterContext is an instance of ru.price.mobilescoutnative.camera.completephoto. │ CompletePhotoActivity with Activity.mDestroyed true) │ Retaining 6,9 kB in 104 objects │ mOuterContext instance of ru.price.mobilescoutnative.camera.completephoto.CompletePhotoActivity with mDestroyed = │ true │ ↓ ContextImpl.mOuterContext ╰→ ru.price.mobilescoutnative.camera.completephoto.CompletePhotoActivity instance Leaking: YES (ObjectWatcher was watching this because ru.price.mobilescoutnative.camera.completephoto. CompletePhotoActivity received Activity#onDestroy() callback and Activity#mDestroyed is true) Retaining 16,0 MB in 836 objects key = 0b60122b-03ad-4fc0-bfc3-6b60e1b5b406 watchDurationMillis = 59595 retainedDurationMillis = 54595 mApplication instance of ru.price.mobilescoutnative.App mBase instance of androidx.appcompat.view.ContextThemeWrapper
更新说明
已创建简易测试项目。
复现步骤
- 点击按钮
- 点击返回按钮,结果如图:

- 点击按钮
- 点击按钮
可能的相关因素
Realme定制ROM的ThreeFingerObserver实现缺陷
泄漏链明确指向WindowManagerImpl$ThreeFingerObserver——这是Realme定制的三指操作观察者组件。在RMX3501_13.F.54固件中,该观察者未在Activity销毁时正确解除注册,导致它持续持有WindowManagerImpl的引用,进而通过mContext关联到已销毁的Activity,最终引发内存泄漏。系统ContentObserver的生命周期管理异常
泄漏起点是native层全局变量引用了ContentObserver$Transport,而该Transport绑定到ThreeFingerObserver。说明此ContentObserver在Activity生命周期结束后未被正确注销,导致native层的全局引用一直保留,无法被GC回收。Android 13适配的定制化bug
问题仅出现在该设备的特定Android 13固件上,Android 11版本无异常,说明是Realme在适配Android 13时,对WindowManager或手势交互模块的修改引入了兼容性问题,属于厂商定制ROM的专属bug。
内容的提问来源于stack exchange,提问作者Vanilla_ice
相关产品推荐
相关产品推荐

