Używam WebBrowsera - nie jest to idealne narzędzie, ale ponieważ obsługuje skrypty Javy, wydaje się mimo wszystko korzystne.
Na formie jest WebBrowser i TPanel, po czym w procedurach wywołuję procedury typu wczytaj_stronę, wciśnij_klawisz, wykonaj_skrypt itp.
Zauważyłem jednak, że uruchomienie w pętli powoduje systematyczny wzrost zajętości pamięci po każdym wczytaniu strony, po dojściu do 600-800MB RAM zaczyna nieźle zmulać kompa. Przeraża mnie jednak perspektywa zwiększenia ilości danych do przetworzenia :(
Poszukałem w necie i znalazłem htakie rozwiązanie:
http://forum.ks-ekspert.pl/topic/132109-delphi-webbrowser-a-procesor/
procedure TrimAppMemorySize;
var MainHandle : THandle;
begin
try
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF);
CloseHandle(MainHandle);
except
end;
Application.ProcessMessages;
end;
Zgodnie z zamieszczonym opisem:
*foo A więc wystarczy ją wywołać i efekt jest taki, że redukuje nam się zużycie pamięci, działa na cały program, nie tylko na programy z TWebBrowser *
Niestety, wywołanie tej procedury faktycznie na chwilę redukuje rozmiar aplikacji do kilkuset kB, jednak po wywołaniu
Application.ProcessMessages;
wraca do poprzedniego rozmiaru.
Czy komuś udało się rozwiązać problem zwalniania pamięci?