Pascal->TWebBrowser->Uvolňování RAM paměti
Dobrý den,
vytvářím webový prohlížeč v Turbo Delphi. Dynamicky vytvářím nové listy, na kterých se dynamicky vytvářejí komponenty TWebBrowser. Neuvolňuje se mi však po zavření listu RAM paměť.
Po vykonání TWebBrowser(FindComponent('WebBrowser'+inttostr(de letedpage))).Free; se neuvolní skoro žádná paměť.
Předpokládám tedy, že musím nejdříve smazat načtený obsah komponenty TWebBrowser a pak teprve uvolnit samotnou komponentu.
Nějaký nápad?
Děkuji
(Pro zajímavost: Po vytvoření sto dynamických listů (+WebBrowserů) s načtením stránky Google.cz program využívá okolo 500MB RAM paměti. Po provedení Free včech komponent TWebBrowser klesne využití RAM paměti asi o 5MB)
Zkus pred odstranenim listu zavolat Navigate s adresou 'about:blank'
Nepomáhá.
No, celého si ma tak trošku "domotal". (Sám som sa domotal.. )
Z toho čo som pochopil tak máš hlavný Formulár a na ňom PageControl, v ktorom potom dynamicky vytváraš listy (Tabsheet) a v nich následne TWebBrowser.
Čiže ja by som to riešil asi nasledovne:
1. Vytvoril by som proceduru, kde by sa dynamicky vytvárali TabSheet+WebBrowser:
2. potom by som si vytvoril procedúru, kde by som zatváral napr. aktívny list aj s následným zrušením WebBrowsera:
Chlape, s tím sis neměl dávat práci. To mám hotovo, potřebuji ale vyčistit ten TWebBrowser.Document Vím, že nemusím ničit TWebBrowser, že můžu zničit rovnou TTabSheet. Nechtěl jsme do toho plést ještě TPageControl a proto jsem uvedl WebBrowser.Free. (Ve výsledku se při uvolnění TTabSheetu uvolní i TWebBroswser, ale to neřeší můj paměťový problém. Ovšem ta Opera mě překvapila.)
Ale jak by jsi při použití tvého kódu vytvářel další TTabSheety a jak přistupoval k přibívajícím TWebBrowserům? Měl jsme to nejprve dělané přes pole komponent, ale to jsem zrušil, kvůli přejmenovávání komponent.
Ako pristupovať k TWebBrowserom?
Jednoduché napr: (píšem z hlavy, tak sú možno chyby)
Vyzkoušel jsem a nic. Pravděpodobně je to kvůli rozdílu Delphi 2010/Delphi 2006
Po spuštění:
992kB
Po provedení 13x CreateTabBrowser
96 376kB
Po provedení 13x CloseTab
94 464kB
Aha, ty uvolňuješ obě komponenty. Stačí přeci jenom TTabSheet ne? TWebBrowser se uvolní s ním.
Skús môj uvedený kód vyššie s uvoľňovaním TTabSheet +TWebBrowser (ja som si ho samozrejme najprv vyskúšal u seba Delphi 2010) - mne sa RAM uvoľňuje v pohode, tak ako si chcel Ty...
apsal jsem program v Delphi XE
Po ukončení se však uvolní jen 2MB. Nemůže to být ještě něčím jiným ve Windows?