首页 > 编程语言 >如何在C++/C#中进行Halcon对象的垃圾回收?

如何在C++/C#中进行Halcon对象的垃圾回收?

时间:2023-01-03 19:55:42浏览次数:37  
标签:调用 删除 C# Dispose C++ Halcon 对象 GC

由于.NET 中是让垃圾收集器Garbage Collector (简称GC)删除未使用的对象。但是,由于GC只是不时地删除未使用的对象,因此同时使用的内存会增加。更重要的是,对于GC来说,HALCON 的标志性变量(图像、区域……)似乎相当“小”,因为它们只包含对(在许多情况下相当大)标志性对象的引用数据库。因此,GC可能不会释放这些变量,即使它们不再被使用。因此,您可能需要强制删除(未使用的)对象。有两种方法可以做到这一点:
第一种方式:手动调用GC
比如每次处理运行后在计时器事件中完成:

private void Timer_Tick(object sender, System.EventArgs e)
{
  Action();
  GC.Collect();
  GC.WaitForPendingFinalizers();
}

在托管 C++ 应用程序中调用GC的代码是:

GC::Collect();
GC::WaitForPendingFinalizers();

第二种方式:通过调用Dispose()方法手动处理单个对象

HImage  Image = new HImage("fuse");
  ...
Image.Dispose();

除了减少内存消耗,手动处理对象的另一个原因是释放资源,例如,关闭与图像采集设备或串行接口的连接。
如果要以确定的方式释放引用的资源,则还需要释放包含句柄的 HTuple实例。
请注意,HALCON 运算符总是为输出参数和返回值创建一个新的对象实例(但不是在修改调用实例的“类构造函数”运算符调用中)。如果变量已经初始化,它的旧内容(以及为其分配的内存)仍然存在,直到GC将其删除。如果你想手动删除它,你必须在给它分配一个对象之前调用Dispose 。

标签:调用,删除,C#,Dispose,C++,Halcon,对象,GC
From: https://www.cnblogs.com/amosyang/p/17023224.html

相关文章

  • 模糊聚类FCM算法和基于GA遗传优化的FCM聚类算法matlab仿真
    1.算法概述      在各种糊聚类算法中,模糊C-均值聚类算法FCM(FuzzyCMeanClusteringAlgorithm)的应用最为广泛.但在实际的应用中,FCM算法却容易陷入局部最优解......
  • NC24858 [USACO 2009 Nov S]Job Hunt
    题目链接题目题目描述Bessieisrunningoutofmoneyandissearchingforjobs.FarmerJohnknowsthisandwantsthecowstotravelaroundsohehasimposeda......
  • 【队列】LeetCode 232. 用栈实现队列
    题目链接232.用栈实现队列思路设置一个主栈mainStack和一个辅助栈assistantStack,在进行入队的时候,将mainStack中的元素全部放入assistantStack中,再将x入队,然......
  • part3_CNN
    1CNN概述前面搭建的全连接神经网络是最初始的神经网络模型,非常自然的想法。但是并非所有数据都适合用全连接神经网络实现,同时使用全连接的深度模型,其连接数量太大,随着层......
  • [LeetCode] 1325. Delete Leaves With a Given Value 删除给定值的叶子结点
    Givenabinarytree root andaninteger target,deleteallthe leafnodes withvalue target.Notethatonceyoudeletealeafnodewithvalue target, ......
  • JavaScript 的数据是如何回收的
    因为数据是存储在栈和堆两种内存空间中的,所以接下来我们就来分别介绍“栈中的垃圾数据”和“堆中的垃圾数据”是如何回收的。调用栈中的数据是如何回收的当一个函数执行......
  • 【队列】LeetCode 225. 用队列实现栈
    题目链接225.用队列实现栈思路设置一个主队列mainQueue和一个辅助队列assistantQueue,在进行压栈的时候,将mainQueue中的元素全部放入assistantQueue中,再将x压......
  • Leetcode[LeetCode]4 两个有序数组的中位数
    上图为剑指Offer之字符串的排列,基于回溯法的思想。简单算法01数组中第二大的数02合并排序链表03链表反转04判断链表环05两个链表的首个交点06数组中出现大与一般的数07手写......
  • git clone with multiple account(https)
    ifusemultipleaccountwhenrungitclone(httpsprotocol),wecanusebelowwaytousediffaccount,Gotowebportal,andgetthegitclonelinkunderhttps......
  • MAUI Blazor学习3-绘制ECharts图表
    MAUIBlazor学习3-绘制ECharts图表 MAUIBlazor系列目录 MAUIBlazor学习1-移动客户端Shell布局-SunnyTrudeau-博客园(cnblogs.com)MAUIBlazor学习2-创建移动......