【记】Android使用WebRTC未释放资源导致的内存泄露

1,006 阅读1分钟

公司Android项目有视频语音对讲业务选用WebRTC来实现。集成后发现在关闭对讲页面后native存在内存泄露的情况。

介于本人在网上能找相关资料基本未提及资源释放的问题,或者相关释放部分依旧存在泄露。特此记录一下目前已解决问题的释放方案。

google-webrtc maven地址:mvnrepository.com/artifact/or…

当前引入版本:org.webrtc:goole-webrtc:1.0.32006

需要释放资源如下:

PeerConnection#dispose()

AudioSource#dispose()

VideoCapturer#stopCapture()
             #dispose()

VideoSource#dispose()

VideoTrack#removeSink(VideoSink sink)

SurfaceTextureHelper#dispose()

SurfaceViewRenderer#release()
                   #clearImage()
                   
PeerConnectionFactory#stopAecDump()
                     #dispose()

EglBase#release()

PeerConnectionFactory#static stopInternalTracingCapture()
                     #static shutdownInternalTracer()
                  
                  

未按方案释放资源后的内存情况:

b4b8ff6a8e914c004aed5cd92e40e5d.jpg

609d1fff25d502397f77b239a3adf01.jpg

按方案释放资源后的内存情况

3e4863a4ef42bd4b282912f4c3439a5.jpg

6e9577e0e2785343c96c263e0df930a.jpg