![]() |
Freier Speicher wird nicht freigegeben
Ich habe eine komplexe Anwendung in Delphi,
das rund um die Uhr laufen muss. Da es immer mehr Speicher verbraucht, muss es aber geregelt neu gestartet werden. Eine Prüfung des Speichers mit GetHeapStatus () het ergeben, daß die Anwendung immer mehr freien Speicher (FreeSmall) belegt. ca. 30 Min. nach Start des Programms: TotalAddrSpace: 5.242.880 TotalCommitted: 4.997.120 TotalUncommitted: 245.760 TotalAllocated: 2.403.732 TotalFree: 2.369.048 ========= FreeSmall: 703.464 FreeBig: 1.665.584 Unused: 0 Overhead: 224.340 HeapErrorCode: 0 nach ca. 24 Stunden: TotalAddrSpace: 44.040.192 TotalCommitted: 43.810.816 TotalUncommitted: 229.376 TotalAllocated: 4.373.880 TotalFree: 39.007.308 FreeSmall: 38.986.088 ========== FreeBig: 21.220 Unused: 0 Overhead: 429.628 HeapErrorCode: 0 Wie kann ich den MemoryManager zwingen den Speicher wieder abzugeben bzw. wieder zu verwenden? Jürgen |
Re: Freier Speicher wird nicht freigegeben
Mit freeMem kannst du den Speicher wieder freigeben, den du zb mit GetMem dir registriest hast.
Vielleicht hilft es ja, aber sonst musst du vielleicht mal etwas relaevanten Code posten. |
Re: Freier Speicher wird nicht freigegeben
Zitat:
|
Re: Freier Speicher wird nicht freigegeben
:hi: und herzlich willkommen in der Delphi-PRAXiS :-)
IMHO liegt das Problem nicht so sehr am Speichermanager von Delphi, auch wenn der seine Macken hat, sondern eher daran, daß Du wahrscheinlich irgendwelche Objekte nicht sauber freigibst. Ansonsten kannst Du ja einen Schwellwert einbauen und nach erreichen dieses Die Anwendung sich selbst neustarten lassen (siehe ![]() ...:cat:... |
Re: Freier Speicher wird nicht freigegeben
Da der Speicher in der Struktur THeapStatus als FreeSmall und nicht als TotalAllocated aufgeführt wird, gehe ich davon aus, dass er bereits
freigegeben wurde. Der Anteil von FreeSmall ist in der Zeit von 2 MB auf 38 MB angestiegen. Somt muss es doch etwas mit dem MemoryManager zu tun haben. |
Re: Freier Speicher wird nicht freigegeben
Wo Du Recht hast...
Mal eine Frage. Nutzt Du viele VCL Klassen in Deinem Projekt. Da gibt es ein bekanntes Problem. Irgendwo im Forum war mal der Link :gruebel: ...:cat:... |
Re: Freier Speicher wird nicht freigegeben
Zitat:
- TeeChart - MDI-Formulare - QReport - IB-Objects - dynamsche Arrays ... [edit=sakura]BBCode zugelassen. Mfg, sakura[/edit] |
Re: Freier Speicher wird nicht freigegeben
Links zum Thema Leaks in Delphi Memory.Manager (ist aber nicht der, den ich gesucht habe :gruebel:
![]() ![]() ![]() und ![]() ...:cat:... |
Re: Freier Speicher wird nicht freigegeben
Ich werde den MemoryManager testen...
|
Re: Freier Speicher wird nicht freigegeben
Status nach 16 Stunden Dauertest:
statt innerhalb von 24 Stunden von 10 MB auf 50 MB in 16 Stunden von 10 MB auf 12 MB (laut TaskManager) Leider funktioniert aber der Befehl GetHeapStatus() nicht mehr und dem MemoryManager gibt es keine Funktion zur Statusermittlung. Vielen Dank für die Hilfe Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz