halcon易错系列—临时缓存算子set_system('temporary_mem_cache', 'false')

概述

halcon混编/引擎方式在特定条件下长时间运行,会存在临时内存缓存,这个缓存可以使系统性能增加,但是不可避免的会增加内存的使用,一旦有缓存重复添加时会有内存连续增长的风险,比如激光项目内存出现连续增长情况

针对这种内存问题的解决方案需要从halcon的系统函数着手

 

一、算子说明

set_system('temporary_mem_cache', 'false')

'idle' 空闲
临时内存缓存已关闭。此模式使用的内存最少,但与其他模式相比也会降低性能。              
'shared' 共享
所有临时内存都全局缓存在临时内存库中。与“独占”模式相比,此模式将使用更少的内存,但通常也会提供更少的性能。              
'exclusive' 独占
为每个线程在本地缓存所有临时内存。这种模式将使用最多的内存,但通常也会提供最好的性能。      
'aggregate' 聚合       
大于使用'alloctmp_max_blocksize'参数设置的阈值的'aggregate'临时内存块将缓存在全局内存库中,而所有较小的块将聚合为一个单独的块,该块在本地为每个线程缓存。如果全局内存库被禁用,则会释放较大的块。聚合块的大小将根据线程目前看到的临时内存使用情况确定,但它不会大于“alloctmp_max_blocksize”(如果设置)或小于“alloctmp_min_blocksize”(如果设置)。此模式平衡内存使用和速度,但需要为应用程序的内存使用模式正确设置“alloctmp_min_blocksize”和“alloctmp_max_blocksize”,以提高效率。

为了向后兼容,还接受值“false”和“true”;它们分别对应于“idle”和“exclusive”。

你可能感兴趣的:(halcon学习)