我的 webrtc Android native 应用程序与 WebRtcAudioRecord.context
存在问题.泄漏金丝雀不断报告WebRtcAudioRecord.class
正在泄漏内存。
我确实以这种方式处理我的 webrtc 组件:
peerConnection?.dispose()
videoCapture?.dispose()
videoSource?.dispose()
factory.dispose()
PeerConnectionFactory.stopInternalTracingCapture()
PeerConnectionFactory.shutdownInternalTracer()
但是 Leak canary 仍然不断报告 WebRtcAudioRecord.context
正在泄漏。知道如何解决这个问题吗?
我的应用程序不流式传输音频只是流式传输视频。
这是金丝雀内存泄漏报告:
┬─── │ GC Root: Global variable in native code │ ├─ org.webrtc.audio.WebRtcAudioRecord instance │ Leaking: UNKNOWN │
Retaining 99 B in 2 objects │ context instance of .ui.activities. │ MainActivity with mDestroyed = true │ ↓ WebRtcAudioRecord.context │╰→ .ui.activities.MainActivity instance Leaking: YES (ObjectWatcher was watching this because .ui.activities.MainActivity received Activity#onDestroy() callback and Activity#mDestroyed is true) Retaining 153.0 kB in 2750 objects key = 33e94f80-0004-4aeb-b351-dab64a8280da watchDurationMillis = 5134 retainedDurationMillis = 134 mApplication instance of .App mBase instance of androidx.appcompat.view.ContextThemeWrapper
METADATA
Build.VERSION.SDK_INT: 29 Build.MANUFACTURER: HUAWEI LeakCanary version: 2.6 App process name: some.app Count of retained yet cleared: 10 KeyedWeakReference instances Stats: LruCache[maxSize=3000,hits=4250,misses=80514,hitRate=5%] RandomAccess[bytes=4071605,reads=80514,travel=36763422162,range=23400016,size=29 171709] Heap dump reason: 8 retained objects, app is visible Analysis duration: 4019 ms
最佳答案
我找到了原因!
对我来说,它是
val options = PeerConnectionFactory.InitializationOptions.builder(context)
.setEnableInternalTracer(true)
.setFieldTrials("WebRTC-H264HighProfile/Enabled/")
.createInitializationOptions()
我在这里为构建器传递了 Activity 上下文而不是应用程序上下文。
关于android - WebRtcAudioRecord.context 由泄漏金丝雀报告泄漏。怎么解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66486257/