概述
halcon混编/引擎方式在特定条件下长时间运行,会存在临时内存缓存,这个缓存可以使系统性能增加,但是不可避免的会增加内存的使用,一旦有缓存重复添加时会有内存连续增长的风险,比如激光项目内存出现连续增长情况
针对这种内存问题的解决方案需要从halcon的系统函数着手
一、算子说明
set_system('temporary_mem_cache', 'false')
'idle' 空闲
临时内存缓存已关闭。此模式使用的内存最少,但与其他模式相比也会降低性能。
'shared' 共享
所有临时内存都全局缓存在临时内存库中。与“独占”模式相比,此模式将使用更少的内存,但通常也会提供更少的性能。
'exclusive' 独占
为每个线程在本地缓存所有临时内存。这种模式将使用最多的内存,但通常也会提供最好的性能。
'aggregate' 聚合
大于使用'alloctmp_max_blocksize'参数设置的阈值的'aggregate'临时内存块将缓存在全局内存库中,而所有较小的块将聚合为一个单独的块,该块在本地为每个线程缓存。如果全局内存库
本文介绍了Halcon中临时内存缓存的问题及其对系统性能的影响。通过算子set_system('temporary_mem_cache', 'false')可以关闭缓存,减少内存使用,防止内存连续增长。测试结果显示,关闭缓存可稳定内存占用,而开启缓存可能导致内存飙升甚至系统崩溃。建议根据项目需求选择合适的缓存模式,如非激光项目可选择开启,激光项目或低配工控机则关闭。"
116922204,10542378,STM32F407VET6移植elua到Linux详细步骤,"['嵌入式开发', 'STM32', 'Cortex-M4', 'lua', '微控制器']
订阅专栏 解锁全文
2609

被折叠的 条评论
为什么被折叠?



