音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)

Posted 兜兜有糖的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)相关的知识,希望对你有一定的参考价值。

一、现象

  ReplayKit2 适配中 UPLOAD进程被系统杀掉

  日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal)

 

二、内存占用分析

  1)系统回调YUV数据(NV12类型)给到UPLOAD进程,回调方法运行在多线程中

- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType

  上述在多线程中带来两个问题:

  第一个是一帧YUV图像在大屏手机上占用较大内存,比如iphone6+手机上,1242x2208x1.5 = 3.92MB;

  此外因为多线程回调,如果直接将每帧图像都进行处理,可能进程中积累的内存较多,会直接内系统干掉

  第二个是 多线程回调带来的一个时序的问题,系统给到的屏幕数据方向、尺寸不可控,如果对图像进行旋转,那么低端机型上面缩放旋转性能是否可接受

三、解决思路

  将回调的YUV数据放在一个队列中,在一个线程中循环取YUV的数据,然后进行编码推流

  

以上是关于音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop HDFS: the directory item limit is exceed: limit=1048576问题的解决

eclipse   Unable to execute dex: GC overhead limit exceeded GC overhead limit exceeded解决办法(示例代码

eclipse错误GC overhead limit exceeded

[Time Limit Exceeded]Quoit Design

socket:file descriptor exceeds limit (4096/4096)

gc overhead limit exceeded