如何克服 tessnet 内存泄漏?

Posted

技术标签:

【中文标题】如何克服 tessnet 内存泄漏?【英文标题】:How to overcome tessnet memory leak? 【发布时间】:2011-12-29 11:46:06 【问题描述】:

我在我的个人项目中尝试了 tessnet 库,它是 Tes-s-ract OCR 引擎的包装器。但是我发现 Tessnet 当前版本有很多内存泄漏。 30 次 OCR 后,为我的应用分配的内存增加到 500MB。你能告诉我如何解决这个内存泄漏问题吗?有没有更好的解决方案?我只知道 C# 并且只能在应用程序中使用 .NET 库。 希望尽快收到各位专家的来信。 提前致谢

【问题讨论】:

请出示相关代码。您是否正确处理,尤其是它读取的位图? 我确信我正确地处理了位图。我检查了几个从 Internet 下载的 tessnet 示例项目。他们对我的应用也有同样的问题。 Tessnet 是 Tesseract 的包装器,它陈旧且充满内存泄漏!下面经常处理的解决方案可能是最好的解决方案。 【参考方案1】:

在对我创建的所有位图执行了我需要的操作之后,我通过调用 .Dispose() 解决了我的问题。我也对 TessNetOCR 对象中包含的位图做了同样的事情。

Bitmap bmp = new Bitmap(...);

TessNetOCR ocr = new TessNetOCR(tessnetlocation, lang, bmp, false, false);

(code using ocr and bmp)

ocr.Image.Dispose();

bmp.Dispose();

编辑:我应该注意到该程序正在使用大量内存,并且对我的图像对象调用 dispose 释放了该内存,并解决了内存泄漏问题。

【讨论】:

以上是关于如何克服 tessnet 内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止java中的内存泄漏

彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏

哪些操作会造成内存泄漏以及如何解决内存泄漏

如何检测内存泄漏

如何自己检查NodeJS的代码是不是存在内存泄漏

如何在linux下检测内存泄漏