音视频学习-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