我們有一個相當複雜的Delphi應用程序,它使用.NET程序集。 我們使用FastMM作爲我們的內存管理器。Delphi Windows桌面應用程序 - > 513 MB內存使用啓動 - > 32.1 MB後50分鐘的空閒狀態
我們已經遇到了EOutOfMemory異常。所以我一直在調查這一點。我們懷疑我們在Delphi對象之間有一些循環引用。或者也許一些.NET對象持有對Delphi對象的引用,從而阻止它們被釋放。
到目前爲止,我還沒有發現任何可以改變的事情,這真的令人沮喪,因爲顯然我們在某個地方有問題。
但今天,我憑藉純粹的機會發現了一些東西。 當我們的應用程序啓動任務管理器報告約。 513 MB正在使用的內存。 我剛剛啓動它,但不得不離開午餐。 當我回來時,偶然發現應用程序現在只用了75 MB。 奇怪我以爲,一定是墜毀或我假設的東西。不,完全沒有,應用程序運行完美。 我做了什麼 - >什麼都沒有。讓它閒置。 我們的應用程序是一個Windows桌面應用程序。在空閒狀態下沒有太多的事情正在進行。
於是我開始進一步研究。 它是可重複的。隨着時間的推移,內存消耗開始大幅下降。 後約。 50分鐘已經達到32.1 MB!
我已經監視了.NET垃圾收集器性能計數器,並沒有什麼大的變化。因此,我懷疑問題在德爾福方面 - > FastMM上的哪一點。
雖然我不是FastMM的專家。我確信並且FullDebugMode未啓用。 有沒有其他人經歷過這樣的事情? 任何提示/想法FastMM內可能配置錯誤?
非常感謝!
@DavidHeffernan你似乎有很多關於Delphi-內存管理器的經驗。 :-)。如果您有任何類似的經驗,您可以發表評論,非常感謝。謝謝! – santiagoIT
您無法在此處向特定用戶提出問題,並且您無法使用@符號對他們進行ping操作,除非他們先評論或者您正在評論他們的答案。這不是社交媒體網站,您也不會從您的首選用戶那裏獲得個人技術支持。 –
@KenWhite感謝您的信息!很高興知道。希望他會遇到這個問題。我從其他SO問題中知道David使用他自己的MemoryManager並嘗試了幾次。所以他的投入會很有價值。 – santiagoIT