Einzelnen Beitrag anzeigen

Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML

  Alt 15. Okt 2014, 10:55
Hallo DP !

Ich habe eine sehr simple Anwendung erstellt mit nur 4 Komponenten:

- TWebbrowser
- TButton
- TStatusBar
- TTimer

Eine Funktion zur Ermittlung der Hauptspeichernutzung des eigenen Programms:

Delphi-Quellcode:
function getMyMemoryUsageInKb : integer;
var
  pmc: PPROCESS_MEMORY_COUNTERS;
  cb: Integer;
begin
 cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
 GetMem(pmc, cb);
 pmc^.cb := cb;
 if(GetProcessMemoryInfo(GetCurrentProcess, pmc, cb))then
   result := pmc^.WorkingSetSize div 1024
 else
   result := -1;
 FreeMem(pmc);
end
Ich navigiere per button zu meiner XML Datei (ca. 5,6 MB):

webbrowser1.Navigate('http://www.dragonlords.info/dev/big.xml'); Der Timer zeigt mir nur die RAM-Auslastung an:

Statusbar1.Panels[0].Text := 'RAM: '+ FLoatToStr(Ceil(getMyMemoryUsageInKb/1024)) + ' MB'; Mehr macht diese Anwendung nicht. Das erschreckende daran ist, sie nutzt ca. 750-800 MB Hauptspeicher !

Ich möchte aber mehrere XML Dateien ähnlicher Größenordnung nacheinander untersuchen, jedoch schmiert mir die Entwickler-VM aufgrund zu wenig Hauptspeicher ab. Der IE 11 des Betriebssystems addressiert bei diesem Seitenaufruf ca. 220MB und wächst in kleinen Schritten bis ... weiß nicht genau, bei 280MB habe ich ihn geschlossen.

Wie kann man denn solche großen XML files untersuchen ohne den RAM Bedarf der eigenen Anwendung auf Gigabytegröße anwachsen zu lassen ?

www.dragonlords.info/dev/leak_demo.rar
Jaimy
DAoC 2.0 -> Camelot Unchained !

Geändert von Ajintaro (15. Okt 2014 um 10:58 Uhr) Grund: Link eingefügt
  Mit Zitat antworten Zitat