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