使用WebRtc库时遇到一些问题。一切正常,但是随着时间的推移,我发现内存泄漏。通过消除过程,我将问题的主要根源追溯到以下示例,该示例反复运行会导致内存增长,并且永远不会取消分配。
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> peer_connection_factory_ = webrtc::CreatePeerConnectionFactory(
nullptr /* network_thread */,
nullptr /* worker_thread */,
nullptr /* signaling_thread */,
nullptr /* default_adm */,
webrtc::CreateBuiltinAudioEncoderFactory(),
webrtc::CreateBuiltinAudioDecoderFactory(),
webrtc::CreateBuiltinVideoEncoderFactory(),
webrtc::CreateBuiltinVideoDecoderFactory(),
nullptr /* audio_mixer */,
nullptr /* audio_processing */);
peer_connection_factory_.release();
初始化代码实际上取自未经修改的webrtc示例(see第91行)。我没有做任何不寻常的事情。目前使用的是webrtc的branch-heads / 72版本,据我所知应该稳定。我还看到其他版本的内存在增长,尽管还没有验证是否完全相同。
据我了解,每当清除最后一个引用时,scoped_refptr都应处置并取消分配其资源,这应该发生,因为只有一个副本。我是否误解了它应该如何工作?我也尝试过为编码器/解码器工厂传递nullptr,问题似乎仍然存在。
非常感谢