AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Anwendung frisst auf Windows 7 Arbeitsspeicher
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung frisst auf Windows 7 Arbeitsspeicher

Ein Thema von TUX_der_Pinguin · begonnen am 1. Mär 2023 · letzter Beitrag vom 4. Mär 2023
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 3. Mär 2023, 10:00
Es gibt zwei Möglichkeiten:
Speicher wird immer weiter reserviert und gar nicht mehr freigegeben. Das sieht man dann in den FastMM-Logs. Die muss man nur aktivieren, dann bekommt man ein Log mit Stacktrace usw., so dass man die Speicherlecks leicht findet.

Die andere Möglichkeit ist, dass der Speicher beim Beenden durchaus wieder freigegeben wird, aber zur Laufzeit nicht. Das siehst du dann nicht in solchen Logs. Da helfen dann Speicheranalyse-Tools wie TMS MemInsight:
https://www.tmssoftware.com/site/tmsmeminsight.asp
Danke für den Tipp mit MemInsight von TMS, ich habe mir mal die Testversion heruntergeladen und geschaut ob ich da etwas finden kann.

Ein Speicherleck scheint mir nicht vorzuliegen, sonst müssten die Werte in der Spalte "Diff" ja immer weiter ansteigen und das tun sie nicht.
TMSMemInsight_Screenshot1.png

Was mich jedoch stutzig macht, ist das in der "Memory" Übersicht unten Links die Zahlen "blocks" und "bytes" immer weiter steigen. Während die Zahlen in den Klammern, also Objekte, Strings etc., gleich bleiben.
TMSMemInsight_Screenshot2.png

Kann es sein das die Software ständig neuen Speicher belegt und kurz drauf wieder frei gibt. Dieser freigegebene Speicher jedoch nicht bzw. nicht sofort an das Betriebssystem zurückgegeben wird? Bzw. Windows 7 das überhaupt nicht macht, weshalb der Speicher bei Windows 7 immer weiter anwächst. Die Frage wäre dann wie verhindere ich das bzw. wie teile ich dem Betriebssystem mit das der Speicher wieder frei ist?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.369 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 3. Mär 2023, 13:23
Kann es sein das die Software ständig neuen Speicher belegt und kurz drauf wieder frei gibt. Dieser freigegebene Speicher jedoch nicht bzw. nicht sofort an das Betriebssystem zurückgegeben wird? Bzw. Windows 7 das überhaupt nicht macht, weshalb der Speicher bei Windows 7 immer weiter anwächst.
Das ist so und das ist völlig normal. Darum kümmert sich aber nicht Windows, sondern der Speichermanager der Delphi-Anwendung, der also nicht abhängig von der Windowsversion ist.

Dieser Effekt führt aber weder dazu, dass die Anwendung zu viel Speicher verbraucht, noch dass sie abstürzt. Wie viel Speicher hat die Anwendung denn, wenn sie abstürzt und mit welchem Fehler stürzt sie ab?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.202 Beiträge
 
Delphi 12 Athens
 
#3

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 3. Mär 2023, 13:36
Beispiel:

Erzeue immer wieder viele TEdit.Create(nil) oder TEdit.Create(Self) und vergiss sie freizugeben.

Bei Letzterem würden die Edits aber an der Form hängen
und somit beim Beenden freigegeben,
bevor der Speichermanager seine Leck-Kontrolle durchführt.

Zur Laufzeit würde aber in beiden Fällen der Speicher sich füllen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 3. Mär 2023, 15:08
Dieser Effekt führt aber weder dazu, dass die Anwendung zu viel Speicher verbraucht, noch dass sie abstürzt. Wie viel Speicher hat die Anwendung denn, wenn sie abstürzt und mit welchem Fehler stürzt sie ab?
Da das bei einem Kunden passiert ist, kann ich das gar nicht genau sagen. Ich vermute aber das es 2GB waren. Die Meldung war "zu wenig Speicher" und eine 32 Bit Anwendung kann ja maximal 2GB im Speicher belegen.

Ich weiß nicht ob das möglich ist, dem Speichermanager irgendwie zur Laufzeit ab und an mitzuteilen das er "aufräumen" soll.

Und irgendein Unterschied muss die Windows Version ja machen, warum sonst verhält sich die gleiche Software auf unterschiedlichen Versionen anders.


Beispiel:

Erzeue immer wieder viele TEdit.Create(nil) oder TEdit.Create(Self) und vergiss sie freizugeben.

Bei Letzterem würden die Edits aber an der Form hängen
und somit beim Beenden freigegeben,
bevor der Speichermanager seine Leck-Kontrolle durchführt.

Zur Laufzeit würde aber in beiden Fällen der Speicher sich füllen.
Aber genau das müsste sich mit TMS Memory Insight ja anzeigen lassen, das immer mehr Objekte erzeugt aber nicht freigegeben werden. Und das passiert hier ja nicht. ES wären zwar zig Objekte erzeugt aber immer auch wieder freigegeben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.202 Beiträge
 
Delphi 12 Athens
 
#5

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 3. Mär 2023, 15:41
eine 32 Bit Anwendung kann ja maximal 2GB im Speicher belegen.
4 GB, wenn man es im PE-Header aktiviert,

(bzw. 3 GB, in einem 32-Bit-Windows)


aber ist es wirklich ein Speicherleck, dann wird das Knallen so nur verzögert, aber nicht verhindert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.369 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 3. Mär 2023, 16:09
Ein Speicherleck scheint mir nicht vorzuliegen, sonst müssten die Werte in der Spalte "Diff" ja immer weiter ansteigen und das tun sie nicht.
Ich kenne das Tool nicht so genau, nur den Vorgänger, den TMS gekauft hat, aber relevant sollte die Spalte Live sein.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.856 Beiträge
 
Delphi 12 Athens
 
#7

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 4. Mär 2023, 09:46
Hallo,

es gibt auch eine Möglichkeit vom integrierten FastMM4 Statistikdaten abzurufen.
Ich weiß nur nicht mehr auswendig wie.

Und um dem FastMM4 das verbesserte Melden von Speicherlecks beizubringen brauchst
du die freie komplette Variante von FastMM4 die du im Internet findest.

Die in Delphi integrierte Variante liefert da nicht alles benötigte mit.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.369 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Anwendung frisst auf Windows 7 Arbeitsspeicher

  Alt 4. Mär 2023, 14:08
Für detaillierte Infos gibt es bei FastMM eine Demo, die man auch in die eigene Applikation integrieren kann.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz