• HOperatorSet.Connection 有内存泄漏或缓存


    开发环境

    Win7 VS2002 halcon12, 直接运行Debug的exe


    宽高5000,单格1*1的棋盘占用内存


    手动释放region regionConnect


          private void butTemp_Click(object sender, EventArgs e)
            {
                butTemp.Enabled = false;
                HOperatorSet.SetSystem("clip_region", "false");
                {
                    HObject region;
                    HOperatorSet.GenCheckerRegion(out region, 5000, 5000, 1, 1);

                    HObject regionConnect;
                    HOperatorSet.Connection(region, out regionConnect);
                    region.Dispose();

                    regionConnect.Dispose();
                }

                butTemp.Enabled = true;
            }

    大约占用200M,两者的顺序不影响结果。

    都不释放

    private void butTemp_Click(object sender, EventArgs e)
            {
                butTemp.Enabled = false;
                HOperatorSet.SetSystem("clip_region", "false");
                {
                    HObject region;
                    HOperatorSet.GenCheckerRegion(out region, 5000, 5000, 1, 1);

                    HObject regionConnect;
                    HOperatorSet.Connection(region, out regionConnect);
                    //region.Dispose();

                    //regionConnect.Dispose();
                }

                butTemp.Enabled = true;
            }

    大约占350M

    只释放region


    private void butTemp_Click(object sender, EventArgs e)
            {
                butTemp.Enabled = false;
                HOperatorSet.SetSystem("clip_region", "false");
                {
                    HObject region;
                    HOperatorSet.GenCheckerRegion(out region, 5000, 5000, 1, 1);

                    HObject regionConnect;
                    HOperatorSet.Connection(region, out regionConnect);
                    region.Dispose();

                    //regionConnect.Dispose();
                }

                butTemp.Enabled = true;
            }
    大约占用200M

    只释放regionConnect


      private void butTemp_Click(object sender, EventArgs e)
            {
                butTemp.Enabled = false;
                HOperatorSet.SetSystem("clip_region", "false");
                {
                    HObject region;
                    HOperatorSet.GenCheckerRegion(out region, 5000, 5000, 1, 1);

                    HObject regionConnect;
                    HOperatorSet.Connection(region, out regionConnect);
                    // region.Dispose();

                    regionConnect.Dispose();
                }
    大约占用200M


    其它版本

    换了halcol18 halcon12的 debug release都如此。
    先释放regionConnect和先释放region 都如此。

  • 相关阅读:
    动态规划进阶【2】
    C超市商品信息查询系统
    【每日一题】最大矩形
    机器人控制算法一之四轴机械臂正、逆运动学详解
    springboot网上投资借贷中介服务毕业设计-附源码221506
    linux shell(一)
    11.9 - 每日一题 - 408
    【深入了解Java String类】
    如何在 R 中计算调整后的 R 平方
    R语言使用dplyr包的mutate函数基于自定义的组合判断条件将dataframe中的特定数值数据列进行因子化(分组、分箱)、并生成新的数据列
  • 原文地址:https://blog.csdn.net/he_zhidan/article/details/132595070