[ Nemanja Avramović @ 24.09.2004. 21:38 ] @
Napravim neki program, znaci samo prazna forma i detektuje kada se pritisne odredjena kombinacija tatera (ono RegisterHotKey...), a forma je nevidljiva. Program zauzme oko 300kb, sto je podnosljivo (UPX-ujem ga ako mi je previse), a onda ga pokrenem i pritisnem CTRL+ALT+DEL, i vidim da je negde u *rangu* explorer.exe-a, jednog od par SVCHOST-a, ... tj. zauzima oko 2.5mb u RAM-u (pise: 2.564 K), a i to ne samo taj jedan program, nego skoro svaki. Svi ostali procesi zauzimaju par kilobajta ("non-system" procesi), a (moje) delphi appz cak 2.5mb, zasto? I kako to smanjiti?
[ morlic @ 24.09.2004. 22:45 ] @
Pracenje "potrosnje" memorije je malo komplikovanije od gledanja liste u task manager-u. Nadji na netu neki program koji daje bogatije informacije o procesima (kao npr. Process explorer na www.sysinternals.com). i gledaj kako se menja potrosnja memorije u zavisnosti da li tvoj program koristi VCL (znaci ima forme, dugmice...) ili nema (konzolna aplikacija ili aplikacija koja nema interfejs kao sto su servisi koje si pomenuo). Kada napravim konzolnu aplikaciju koja nista ne radi potrosnja je oko 390KB sto nije puno, dok aplikacija u prozoru sa par dugmica trosi vec oko 1MB. Jednostavno, program mora da trosi vise ako ima i prozore, dugmice...Da ne ulazim sada u to kako funkcionise rezervacija memorije, swap fajl, sta je working set itd. Windows ima menadzera memorije i tvoja aplikacija ima svog menadzera koji od windows-ovog trazi memoriju (ili vraca) i tu postoje neke specificnosti vezane za Borlandovog menadzera, a koje uticu na to kako aplikacija rezervise memoriju.