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

  • Post author:
  • Post category:其他


概述

halcon混编/引擎方式在特定条件下

长时间运行,会存在临时内存缓存,这个缓存可以使系统性能增加,但是不可避免的会增加内存的使用

,一旦有缓存重复添加时会有内存连续增长的风险,比如激光项目内存出现连续增长情况

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

一、算子说明

set_system(‘temporary_mem_cache’, ‘false’)

‘idle’ 空闲

临时内存缓存已关闭。此模式使用的内存最少,但与其他模式相比也会降低性能。

‘shared’ 共享

所有临时内存都全局缓存在临时内存库中。与“独占”模式相比,此模式将使用更少的内存,但通常也会提供更少的性能。

‘exclusive’ 独占

为每个线程在本地缓存所有临时内存。这种模式将使用最多的内存,但通常也会提供最好的性能。

‘aggregate’ 聚合

大于使用’alloctmp_max_blocksize’参数设置的阈值的’aggregate’临时内存块将缓存在全局内存库中,而所有较小的块将聚合为一个单独的块,该块在本地为每个线程缓存。如果全局内存库被禁用,则会释放较大的块。聚合块的大小将根据线程目前看到的临时内存使用情况确定,但它不会大于“alloctmp_max_blocksize”(如果设置)或小于“alloctmp_min_blocksize”(如果设置)。此模式



版权声明:本文为gukewee原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。