簡體   English   中英

Delphi 7.0和內存泄漏?

[英]Delphi 7.0 and memory leak?

花了很多時間用FastMM4清除任何可能導致內存泄漏的代碼片段,如FastMM4所示,我們已經在Windows 7上測試運行我們的軟件大約一個月了。這就是我目前所看到的我的軟件過程的任務管理器。

> -CPU started out at 1% and 0%. Now it is bouncing around from 2% to 5%
> -VM usage started out at 11,852KB. Now it is at 4,900kb but bouncing
> around from 4,900kb to 5,000kb.

這是否意味着我們的軟件中存在內存泄漏? 我感到困惑和擔憂。

提前致謝,

不,當內存使用率上升並且最終您的應用程序使用所有可用內存時,您會發生內存泄漏並有理由擔心。

這聽起來像是非常正常的內存使用。 該程序執行需要內存的操作,並且內存使用量會增加。 該程序完成它正在做的事情並釋放內存,內存使用率回落。 內存泄漏是指內存使用率上升並持續上升,因為一旦完成內存,您就不會釋放內存。

如果你有FastMM4,你不應該尋找可能導致內存泄漏的事情。 只需啟用完全調試模式和日志記錄選項,它就會找到運行時泄漏的任何內存,並為您寫出包含類型和堆棧跟蹤的文件。

即使應用程序似乎運行好幾天,仍然可能存在隱藏在代碼區域中的內存泄漏,而代碼區域沒有(或不經常)使用。 因此,當應用程序的這部分在一段時間后變為活動狀態時,它們可能會成為一個問題。

為了確保所有代碼都經過泄漏測試,您可以將FastMM4與單元測試(使用DUnit )一起使用,確保盡可能多地執行代碼路徑。 可以使用這個開源Delphi工具或最近成為開源的 Discover來測量單元測試代碼覆蓋率。

此外,主干版本(9.4.0)中的DUnit支持每個測試用例的自動內存泄漏檢測(基於FastMM4)。

可能值得考慮一下調試器嗎? 我知道你不使用它們。 我也有內存泄漏問題。 我沒想到它。 現在使用漏洞的“監護人” - 對我而言,它變成了刪除者。 你可以看一下,這會讓你高興。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM