AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maßnahmen zum Speicherverbrauch minimieren

Ein Thema von stahli · begonnen am 15. Jul 2015 · letzter Beitrag vom 23. Jul 2015
Antwort Antwort
Seite 7 von 7   « Erste     567   
freimatz

Registriert seit: 20. Mai 2010
1.445 Beiträge
 
Delphi 11 Alexandria
 
#61

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 23. Jul 2015, 17:31
Die Frage nach dem Speicher wurde gerne verdrängt. Warum es wichtig ist, was der Taskmanager anzeigt erschließt sich mir nicht. (Außer das manche Leute meinen man könne da auf Memory-Leaks schließen)
Die Frage vieviel Speicherplatz habe ich noch finde ich schon sehr wichtig. Ich glaube da aber nicht dass es keine Antwort darauf gibt, auch wenn ich sie leider auch nicht weiß.

Um den verbrauchten Speicher festzustellen benutzen wir
Delphi-Quellcode:
class function TMemoryManager.GetApplicationMemory(): Int64;
var
  memoryState: TMemoryManagerState;
  blockState : TSmallBlockTypeState;
begin
  GetMemoryManagerState(memoryState);
  with memoryState do begin
    Result := TotalAllocatedMediumBlockSize + TotalAllocatedLargeBlockSize;
    for blockState in SmallBlockTypeStates do
      Inc(Result, blockState.AllocatedBlockCount * blockState.UseableBlockSize);
  end;
end;
Wieviel Speicher noch frei ist, sollte man doch von Windows erfahren können. Bin jetzt zu faul zum googeln.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#62

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 23. Jul 2015, 17:34
Hier ging es aber darum, dass eine Handvoll Objekte den Speicher mit Meta-Informationen zugemüllt haben.

Vermutlich haben diese Meta-Informationen mehr Speicher verbraucht als die Nutzdaten. Das ist in meinen Augen keine Optimierung.

Wenn ich tonnenweise Speicherlecks produzieren würde, dann ist das Beseitigen auch keine Optimierung, sondern ich mache es erst dann richtig. Optimierungen fangen da an, wo man mit richtig fertig ist.

Make it work, then make it fast (and/or smart).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#63

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 23. Jul 2015, 17:48
@freimatz

Memory-Leaks habe ich nicht (siehe #15).

Der Taskmanager bietet einen Hinweis, wie viel Speicher die Anwendung aktuell insgesamt verbraucht. Das wäre schon mal ein Anhaltspunkt.
Ich werde demnächst mal Deine Funktion testen.

Wieviel Speicher noch frei ist, sollte man doch von Windows erfahren können. Bin jetzt zu faul zum googeln.
Ich habe dazu nichts gefunden, versuche es aber später nochmal.


@Sir Rufo

Die Strings sind Nutzdaten. Als Müll würde ich die eigentlich nicht bezeichnen wollen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#64

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 23. Jul 2015, 17:54
Die Frage nach dem freien Speicher ist kompliziert, da sich die Rahmenbedingungen ständig ändern können. Das fängt schon in dem Moment an, in dem jemand im Prozess, aber außerhalb der Kontrolle deines Frameworks anfängt, Speicher zu allozieren (zum Beispiel in einer DLL).

Man kann dem Framework ein konfigurierbares Limit geben, das man selbst überwacht; wenn diese Grenze bei einer Allokation überschritten würde, muss es vorher Objekte freigeben.
Das sollte man wohl auch machen, wenn eine Allokation fehlschlägt(OutOfMemory). Dabei sollte man es vermeiden, beim Freigeben Objekte anlegen zu müssen
Außerdem kann man in diesem Moment das Limit heruntersetzen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#65

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 23. Jul 2015, 17:58
@Sir Rufo

Die Strings sind Nutzdaten. Als Müll würde ich die eigentlich nicht bezeichnen wollen.
Die Strings, die die Eigenschaften beschreiben sind Meta-Informationen. Die Werte der Eigenschaften sind die Nutzdaten.

Und als Müll habe ich die nicht bezeichnet, sondern nur, dass diese Meta-Informationen den Speicher vollgemüllt haben. Um die Schuhgröße zu speichern hast du 4 Byte Nutzdaten (Double) und 20+ Byte Meta-Informationen (UnicodeString) verbraten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 7   « Erste     567   


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 00:42 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