【发布时间】:2015-04-26 22:14:44
【问题描述】:
我正在调查我的代码中的内存堆积问题。
代码说明:
(1) 从网络摄像头实时读取图像。
(2) 根据某些条件,将这些图像添加到 std::vector
(3) std::vector 传递给另一个线程用于写入视频文件。
(4) 尝试 720p、540p、360p 的分辨率。
问题:
- 尽管我在每次写入 .avi 文件后都清除了 std::vector,但内存不断堆积。
- 已验证,一旦我清除矢量,这些图像的引用计数将降至零。
- 上述情况仅在以 720p 运行时发生。在 540p、360p 下看不到。
在调查了很多内存泄漏之后,我没有发现任何问题。
我注意到这个问题只有在 CPU 达到 100% 时才会发生。在 CPU 使用率非常高的情况下,OpenCV 内存清理是否可能无法运行?有没有小伙伴遇到过类似的问题?
任何见解都会很有用。
此外,了解 OpenCV 如何触发执行内存清理的例程也会很有用。
【问题讨论】:
-
有趣的是,我有一些非常相似的行为。虽然不能总是重建内存消耗......你使用了哪个功能?我使用了 Haar 级联分类器。
-
我的是后台减法+主线程中的跟踪。而在消费者线程中,它只是使用 cv::VideoWriter 写入帧。
-
@Micka:你是怎么解决这个问题的。你用过什么变通方法吗?
-
尚无解决方案,但尚未达到 100% 的内存消耗...
-
是的。它具有 TBB 支持