Newsgroup: it.comp.lang.visual-basic
Titolo: [BT] IE non rilascia le risorse

L'ho battezzato BT perche' secondo me non e' proprio off-topic.
Si e' parlato tanto dell'importanza di controllare di mantenere la
richiesta di risorse il piu' bassa possibile e di rilasciare tutte le
risorse allocate nei nostri programmi che ho voluto parlarne di nuovo.
Quel che mi ha fatto incazzare in questi giorni e' questo. Premetto
che l'esperimento e' ripetibile ed e' stato ripetuto 5 volte in 3
giorni, per essere sicuro che quello che vi dico risponda a verita' e
non sia frutto del caso --come spesso avviene :)--.
Finalmente mi e' arrivato il pc nuovo --cioe': finalmente mi sono
deciso a comprarmi un pc nuovo dopo quasi 5 anni--. Macchina
*decisamente* potente, sotto tutti i punti di vista.
Naturalmente, per non mortificarla, ho escluso Win9x e WinME e,
siccome i driver scarseggiano e le periferiche abbondano, ho escluso
anche WinNT. Dunque ho installato Win2k, e durante l'installazione e'
andato ok. Tutto sembra funzionare bene, ma le risorse di sistema sono
comunque "poche". Apro Icq, un proxy, Avp --antivirus--, un paio di
cazzate, Agent, Pegasus e Visual Studio. Se navigo con IE e apro un
po' di finestre, le risorse di sistema esauriscono in relativa
velocita'. Diciamo che con 14/15 finestre aperte su eBay --per dire
che non sono complesse--, non entro neanche piu' nei menu' delle
applicazioni. La memoria occupata e' poca --si' e no 300MB--, ma le
risorse sono esaurite. Con un sistema operativo a 32bit "reali", mi
aspettavo molto di piu'... Diciamo che mi aspettavo, almeno, di non
finire *MAI* le risorse di sistema, nemmeno se aprivo 60 finestre di
IE su siti completamente grafici e 9 copie di Visual Studio.
Comunque, quello che volevo far notare e' che IE, alla stregua dei
programmini shareware da $5 su 
winfiles.com
 :), non rilascia tutte le
risorse allocate.
Facciamo un esempio pratico. Sono andato su un sito di jazz
--bellissimo-- gestito da un ragazzo italiano. C'e' una pagina coi
files .mid di una trentina di standard, che volevo scaricare per
suonarci sopra ed esercitarmi un po'. Allora tasto destro, salva
oggetto con nome e salvo il primo file. Poi il secondo. Poi il terzo.
Poi il quarto... anzi no: il menu' non si apre: risorse esaurite
--suppongo--. Allora chiudo Visual Studio e riparto col salvataggio di
files midi. Ora il menu' sulla pagina html si apre. E ne salvo altri
10 --circa--. Poi stessa storia. Chiudo una finestra di IE e ne posso
salvare altri 3 o 4 e la cosa si ripete. Avevo aperto un notepad
sull'html di una pagina che mi interessava: decido di chiudere quello.
Menu' file, salva con nome. Notepad sparisce senza salvare...
Sto soltanto usando IE: tasto destro, compare il menu', clicco, salvo
*con IE* --niente Getright o chi per lui--. Quindi chi perde qualcosa
per la strada e' lui... Gli altri non stanno facendo nulla...
Una volta terminato il salvataggio dei files, Visual Studio non parte
piu', perche' mancano risorse di sistema. Chiuso Agent, andato su
altre 2 pagine con IE --cioe' cambiato pagina, non aperte nuove
istanze di IE--, Agent non si riapre piu' perche' mancano risorse di
sistema...
Che bel browser che e' IE... Pesante come un elefante che, oltre ad
essere obeso, cresce di peso e volume continuamente... L'unico modo e'
ucciderlo e ripartire dal Big Bang riavviando il sistema =)
Tutta questa bella cosa l'ho raccontata agli esperti per far perdere
loro 10 minuti e ai novizi perche' capiscano che e' davvero importante
controllare almeno 36*10^25 volte di avere liberato tutte le risorse
quando si chiude il programma, altrimenti tutto muore.
Ecco, infine, una domanda per dare un tocco di interesse a questo
post...
Di solito, quando dichiaro una variabile con dim nome as new tipo poi
mi preoccupo di fare un set nome as nothing prima di uscire dalla sub
oppure dal programma --quando e' una variabile di modulo oppure
globale--. Qualche tempo fa, qualcuno suggeriva, se si avevano form
"secondari", di fare un set nomeform = nothing per ogni form
aggiuntivo. Questo, secondo me, non serve. Io l'ho fatto, pero'
secondo me non serve. Infatti, se questo fosse necessario, per ogni
controllo --testbox, combo, ecc-- bisognerebbe fare set nomecontrollo
= nothing. Per Windows non ci sono differenze tra un pulsante e un
form: perche' per un form dovrei fare il set e per un commandbutton
no?
Naturalmente, nell'unload o nel terminate --non ricordo-- del form
principale faccio un unload di tutti gli altri form --non uso un
end--, pero' quando faccio un unload di un form, tutti i controlli
dovrebbero essere distrutti dal sistema operativo, no?
Ok, la risposta sarebbe "si'" se il sistema operativo fosse fatto
davvero bene, pero' mi sembra quanto meno auspicabile che, per queste
cose, Windows lavori bene, no?
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-VI --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

Il 03 mag 2001 Gianni Rondinini ha espresso la sua creatività scrivendo:
Scusa se ho tagliato il tuo testo, ma non volevo esagerare con la grandezza 
del post.
Non hai parlato delle dimensioni del tuo PC, io ti parlo del mio in modo 
che la comparazione possa farla tu stesso.
Ho un AMD Thunderbird 1000 MHz con 512 Mb PC133 su scheda madre Asus A7V 
(Socket A). Win2K (per non mortificarlo :)
Non ho mai avuto problemi di risorse anche con le decine di finestre aperte 
di cui parli tu. Tralasciando la fase di buffering non ho MAI visto la 
traccia della RAM salire sopra il 40% e se sono arrivato al 75% dell'uso 
del procesore è stato un caso "una tantum"
Fai le dovute proporzioni e facci sapere. Non dimenticare però che si parla 
pur sempre di Windows, quindi di casa Redmond e quindi di qualcosa di 
approvato dal grande Bill. Se io fossi in te mi toglierei lo sfizio di 
provare a vedere come gira Linux su quel PC. Secondo me il kernel 2.4 lo 
farebbe decollare.
Ciao ciao.
-- 
WulfMp3
wul...@email.it
"Poni ciò che sei nel minimo che fai."

 cose, Windows lavori bene, no?
uhmmmmm si, molto auspicabile  :)
Saluti
Faber

Confermo; prova anche a usare IE, chiuderlo, riaprirlo, usarlo, chiuderlo,
riaprirlo......
Basta guardare il misuratore di risorse, anche se chiudi tutto non tornerà
mai al livello iniziale.

Fatevi un saltino su 
http://www.winguides.com/
 che magari c'è qualche cosina che
vi può interessare.
A volte non è il SO che pecca, ma le impostazioni predefinite (e non
documentate) di circa due dozzine di chiavi del registro, che consentono di
modificare molte cose.
Ad esempio, ogni volta che si carica IE vengono caricate tutte le sue dll...
Una chiave consente di scaricarle o tenerle in memoria.
Per il download, il limite di 4 processi è stabilito per default, ma è
modificabile...
Ciao belli....
--
GbC
http://www.chiappori.net
http://www.gbcweb.com
--

 Si e' parlato tanto dell'importanza di controllare...
[cut]
Le impostazioni di default di Win2k lasciano alquanto a desiderare, ci
sono molti servizi inutili che vengono avviati. Disattiva tutti i
servizi che non ti servono. Segnati i servizi che disattivi, cosi' in
caso di errori che ti impedissero di far partire Windows puoi avviare il
PC dal CD di Win e dalla console di ripristino riattivare il/i
servizio/i incriminati.
Ti faccio presente che utilizzo senza problemi Win2000 + Office2000 +
MSDE su un P133 con 64 MB di RAM. Quello che veramente "ammazza" Win2k
e' un disco lento.
Ciao.
P.S.
Ovviamente tutto NTFS, spero che tu non abbia FAT.
Ciao.