![]() |
Wie kann man ein "halbes" Memory-Leak finden?
Hi,
ja, der Titel sagt es schon aus: Ich suche ein Memory-Leak, das nur halb eines ist. Das Problem: Läuft die Anwendung, wächst der Speicher mit der Zeit ins Uferlose. Schliesse ich die Anwendung wird aber z.B. laut Eureka-Log der Speicher wieder vollständig freigegeben. Ergo: Der gesamte angeforderte Speicher wird beim Beenden der Anwendung auch wieder freigegeben, irgendwo fragt die Anwendung allerdings mehr oder weniger regel- bzw. unregelmässig nach Speicher an und behält diesen, obwohl ich mir ziemlich sicher bin, dass sie diesen Speicher eigentlich schon viel Früher wieder freigeben könnte / müsste. Das wäre an und für sich kein Problem, würde die Anwendung nur 8 Stunden am Tag genutzt dann beendet / am nächsten Tag neu gestartet. Blöderweise läuft diese Anwendung aber zumindest theoretisch 24/7/52. In der Praxis kachelt sie aufgrund mangels Speicher irgendwann ab. Wie kann ich also so ein 'halbes' Speicherloch gezielt finden? Ich hab echt keine Idee ausser den _gesamten_ Source durchzusehen, und an _jeder_ Stelle wo Speicher angefordert und freigegeben wird eine Ausgabe zu loggen. Nur ist der gesamte Source verdammt groß und das würde Ewigkeiten dauern. Gibts da einen besseren Ansatz? |
Re: Wie kann man ein "halbes" Memory-Leak finden?
Hast du es schon mal mit MemProof o.Ä. versucht?
|
Re: Wie kann man ein "halbes" Memory-Leak finden?
Ich vermute mal das du hier eine Komponenten so erzeugst das der Parent für die Freigabe verantwortlich ist.
Und anstatt das schon die vorhandene Instanz verwendet wird, wird jedesmal eine neue erzeugt. |
Re: Wie kann man ein "halbes" Memory-Leak finden?
Zitat:
|
Re: Wie kann man ein "halbes" Memory-Leak finden?
Zitat:
Zitat:
|
Re: Wie kann man ein "halbes" Memory-Leak finden?
Zitat:
Hast Du irgendwie einen Ansatz, was für ein Aufwand das wäre sowas zu schreiben? Insbesondere wenn man (wie ich) keinen Plan davon hat wie man sich in das Memory-Management einhängt? Edit: Verklickt... |
Re: Wie kann man ein "halbes" Memory-Leak finden?
Es ist kein Memory-Management Problem...so wie ich das verstehe, sondern ein algorithmisches. Da werden Objekte erzeugt, die ja am Ende korrekt freigegeben werden. Nur werden die Objekte eigentlich nicht benötigt. Oder vielleicht nur kurzfristig, und werden viel zu spät freigegeben.
sherlock |
Re: Wie kann man ein "halbes" Memory-Leak finden?
Man munkelt, FastMM könne so etwas.
|
Re: Wie kann man ein "halbes" Memory-Leak finden?
Zitat:
Nur: Wie findet man diesen Fehler? |
Re: Wie kann man ein "halbes" Memory-Leak finden?
Algorithmisches findet man eigentlich nur durch Analyse der Algorithmen. Das bedeutet je nach vorhandenener Dokumentation schlimmstenfalls ein Codewalkthrough :(
Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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