Frage

Ich habe den Fastmm4 mit D6 überprüft. Wenn ich eine einfache Anwendung mit den Anwendungen "Formulare" debugierte, habe ich jedes Mal 3 Zeilen zum Speicherleck.

Diese Anwendung hat den Speicher durchgesickert. Die kleinen Blocklecks sind (ohne Erwartete Lecks, die von Zeiger registriert werden):

13 - 20 Bytes: TobjectList X 3, Unbekannt x 3 29 - 36 Bytes: Twinhelpviewer x 1 37 - 52 Bytes: Thelpmanager x 1

ist das normal?

welches ding führt dazu?

danke: dd

War es hilfreich?

Lösung

Der RTL / VCL, der mit Delphi 6 versendet, enthält einige Speicherlecks. In späteren Releases von Delphi werden die Verwendung von Fastmm-LED zu diesen Speicherlecks aus dem RTL / VCl entfernt.

Was Sie tun müssen, ist diese bekannten und erwarteten Speicherlecks mit Fastmm registrieren. Sobald Sie die Lecks registriert haben, die Fastmm sie nicht melden. Obwohl diese Lecks echt sind, werden sie aus verschiedenen Gründen am besten ignoriert:

    .
  • Der durchgesickerte Gedächtnis von diesen bekannten VCL-Lecks ist winzig und wächst nicht während der Lebensdauer des Prozesses.
  • der Speicher, der in das System zurückgekehrt ist, sobald der Prozess ohnehin endet.
  • Da sich die Lecks in der Kontrolle über Ihre Kontrolle befinden, gibt es keinen großen Betrag, den Sie tun können. Sie können sie beheben und Ihre eigene Version der betreffenden VCL-Einheiten verwenden, aber es lohnt sich?

    Das einzige Mal, dass diese Lecks wichtig sein könnten, ist, wenn Sie eine DLL hätten, die während der Lebensdauer dieses Prozesses von demselben Prozess tausend Male geladen und abgeladen wurde. Ich glaube nicht, dass dies ein sehr realistisches Szenario ist.

    Wenn Sie die Lecks nicht registrieren, wird das FastmM-Leck-Berichtswesen weitgehend unwirksam, da es jedes Mal zeigt. Wenn es jedes Mal zeigt, wenn Sie lernen, es zu ignorieren. Diese Leck-Berichterstattung ist sehr wertvoll, aber es ist nur wertvoll, wenn es Lecks zeigt, die Sie mit der Kontrolle haben.

    In meinem Delphi 6-Projekt habe ich den folgenden Code in meiner .dPR-Datei: generasacodicetagpre.

    Ich habe auch das folgende in einem generationspoDicetagcode-Nachkomme, aus dem alle Formulare in meiner App absteigen: generasacodicetagpre.

    Abhängig davon, welche Einheiten Sie im RTL / VCL verwenden, und wie Sie sie verwenden, müssen Sie möglicherweise verschiedene Speicherlecks registrieren.

Andere Tipps

Ich würde erraten, dass es normal ist, wenn Sie nicht die Quellen gepatcht haben.IIRC, wenn der Autor 'MEMANAS STOYANOV' 'MEMANISS' war, hielt der Autor "Atanas Stoyanov" eine Liste von Fehler, die Gedächtnislecks verursacht haben.Das Leck in der 'Klassen.pas', F.I., erfolgt jede VCL-Formulare Anwendung.Obwohl das Produkt nicht mehr existiert, finden Sie die Liste bei 'Automated QA's Site.Hier ist der Liste für d6 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top