.Net Concurrent BlockingCollection有内存泄漏?

 上官王木木 发布于 2023-03-19 07:15
  • php
  • 我正在使用带有> 的生产者/消费者模式System.Collection.Concurrent.BlockingCollection来从数据库(生产者)检索数据并在数据(消费者)上创建Lucene索引.

    Producer一次抓取10000条记录并将该添加到BlockingCollection.然后消费者(稍微慢一点)抓住那些10000并创建一个索引.

    阻塞集合被限制为每个10000行中的5个.

    起初程序运行得很好,但是在它获得大约150000行后,我注意到我的计算机内存最大化并且它慢慢爬行.

    似乎BlockingCollection无法null在获取项目后将基础数组槽设置为.

    码:

        private static LuceneIndex index;
        private static BlockingCollection blockingCol;
    
        private static void Producer()
        {
            while (true)
            {
                //...get next 10000 rows
                DataTable data = GetNextSet();
                if(data.Row.Count > 0)
                    blockingCol.Add(products);
                else
                    break;
            }
        }
    
        private static void Consumer()
        {
            while (!BlockingCol.IsCompleted || BlockingCol.Count > 0)
            {
                DataTable data = blockingCol.Take();
                index.UpdateIndex(GetLuceneDocs(data));
            }
        }
    
    
     public static void Main(System.String[] args)
     {
                index = new LuceneIndex();
                blockingCol = new BlockingCollection(2);
                // Create the producer and consumer tasks.
                Task Prod = new Task(Producer);
                Task Con = new Task(Consumer);
                // Start the tasks.
                Con.Start();
                Prod.Start();
                // Wait for both to finish.
                try
                {
                   Task.WaitAll(Con, Prod);
                }
                catch (AggregateException exc)
                {
                   Console.WriteLine(exc);
                }
                finally
                {
                   Con.Dispose();
                   Prod.Dispose();
                   blockingCol.Dispose();
                 }
    }
    

    任何人都可以确认拒绝此暂停吗?还有什么工作吗?

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有