首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用TMatchCollection/TMatch体验内存泄漏

使用TMatchCollection/TMatch体验内存泄漏
EN

Stack Overflow用户
提问于 2015-11-21 14:32:13
回答 1查看 283关注 0票数 1

我在使用Delphi记录时遇到了一个问题。这是我的问题代码:

代码语言:javascript
运行
复制
function CrawlThread.CrawlLinks: bool;
var
  Matches: TMatchCollection;
  Match: TMatch;
  i: integer;
begin
Matches:= TRegex.Matches(code, frmCrawler.Edit2.Text);
      if Matches.Count > 0 then
      begin
        i:= 0;
        for Match in Matches do
        begin
          SetLength(CrawledLinks, i + 1);
          if (POS('https://', Match.Value) = 0) then
            CrawledLinks[i]:= 'http://' + Match.Value
          else
            CrawledLinks[i]:= Match.Value;
          inc(i);
        end;
        Result:= true;
      end;
      Matches:= TRegex.Matches(code, frmCrawler.Edit3.Text);
      if Matches.Count > 0 then
      begin
        i:= 0;
        for Match in Matches do
        begin
          SetLength(FollowLinks, i + 1);
          if (POS('https://', Match.Value) = 0) then
            FollowLinks[i]:= 'http://' + Match.Value
          else
            FollowLinks[i]:= Match.Value;
          inc(i);
        end;
        Result:= true;
      end;

这段代码在线程中被多次调用,如果我注释它,我的内存使用量就会达到26 up,而不是成长起来.当我使用它时,我启动了大约50 1MB (这不是一个问题),但它一直以每分钟1MB的速度增长(在1分钟内,这段代码被调用了数百次)。

使用ReportMemoryLeaksOnShutdown:= true;我得到以下输出:

在注释或使用代码时几乎是一样的,所以我不相信它在使用代码时每分钟解释1MB。当然,UnicodeString泄漏会困扰我,但由于我得到了它们,即使不使用代码,我也不认为它们是问题所在。你知道为什么这段代码占用了这么多内存吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-22 19:36:27

  1. 我认为显示的代码没有泄漏,因为TMatchCollectionTMatch都是纯记录。
  2. 由于字符串的分配,我也看到了类似的内存积累。但是,它必须在一段时间后稳定下来,除非它们被f.ex添加到TStringList中,而无需清理它。
  3. 这就引出了下一个:消息框中提到了两个从未被释放的TStringList。您是否尝试过搜索项目中的所有TStringList.Create并确保有匹配的TStringList.Free?同样适用于TCriticalSectionTIdHashMessageDigest5
  4. 可以肯定的是:在上面的代码中,它似乎是线程类中的一个方法?如果是这样的话,它将导致引用VCL线程中的组件frmCrawler.Edit2.TextfrmCrawler.Edit3.Text的错误。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33844495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档