Newsgroup: it.comp.macintosh
Titolo: ma perché i programmi ingrassano?

accendo il mio mac, apro neooffice, thunderbirds, itunes, firefox, e mi 
metto a lavorare dopo un'ora di lavoro controllo la memoria e ho 231mb 
liberi.
adesso, dopo sette ore circa la memoria libera è di 23mb (!), i 
programmi aperti sono sempre gli stessi. la memoria inattiva è passata 
da circa 400mb a 330 e quella attiva da 260mb a 586mb...
tutti i programmi consumano più ram di quando sono stati aperti, anche 
se stanno gestendo sempre le stesse finestre: neooffice usa 70mb in più, 
thunderbirds 20mb in più, firefox 40mb in più, itunes quasi 20, e tra i 
task, kernel 10mb in più, windowserver 40mb in più...
è normale che i programmi con il passare del tempo ingrassino sempre di 
più saturando piano piano la memoria disponibile e usando tutta quella 
attiva?
f.
ps è normale che ci siano due task windowserver?
-- 
http://loscimmiotto.splinder.com/

 attiva?
misteri di *nix! Dalle lettere dell'apostolo Stallman ai programmatori
Antani.

 attiva?
e' normale per i programmi che fanno "acqua" (memory leak): quando serve
piu' memoria la chiedono al sistema ma poi una volta finito si dimenticano
di restituirla.
-- 
He says the sun came out last night. He says it sang to him.

 
sě, ma in pratica non si arriva mai a saturazione della memoria, 
altrimenti comporterebbe un blocco del sistema.
in altre parole immagino che la memoria non in uso non venga 
ripristinata per pura economia di gestione delle risorse: cioč lo fa 
solo quando lo ritiene opportuno.
(almeno credo)
alecs.

 usando tutta quella 
Ni: hai strane patch?
-- 
Brave your heart / Renounce your fears
Locked away inside / All these years
http://www.cieloprovvisorio.net

 di restituirla.
Questo può essere responsabile di un progressivo rallentamento del sistema?
E come si fa a "ripulire" ogni tanto, in modo da risvegliare il Mac?

 E come si fa a "ripulire" ogni tanto, in modo da risvegliare il Mac?
i processi user logout - login
i processi di sistema rebut

 alecs.

 E come si fa a "ripulire" ogni tanto, in modo da risvegliare il Mac?
Onyx nei soliti posti.
Un Maramao che sto parlando di siti web, eh? :P
-- 
I've always been more concerned with users. )\._.,--....,'``.
Programmers do their work but once, while  /,   _.. \   _\  (`._._,
users are saddled with it ever thereafter. `_.-(,_..'--(,_..'`-.;.'

 memoria virtuale)
ho messo questa frase in babelfish ma non mi è servito
-- 
http://loscimmiotto.splinder.com/

 Ni: hai strane patch?
sistema abbastanza pulito
-- 
http://loscimmiotto.splinder.com/

 di restituirla.
Attenzione, il comportamento descritto da f. è tipico anche dei
programmi che *non* hanno memory leak, e dipende da come sono
implementate malloc e free (e conseguentemente quello che ci sta sopra).
Per esempio un gestore della memoria potrebbe legittimamente "mettere da
parte" la memoria deallocata e poi quando c'è bisogno di nuova memoria
restituisce quella che si era messo in cassaforte, senza chiedere di più
al sistema.
Tanto con i sistemi operativi moderni questa operazione non presenta
grossi problemi, a fronte invece di qualche sys call in meno.
In effetti in questo modo un programma che "gira all'infinito"
manterebbe una quantità di memoria pari a quella che aveva nel momento
di massima richiesta. La funzione sarebbe dunque una funzione costante a
tratti limitata in un uso normale, laddove quella tipica di un programma
con memory leaks divergerebbe ad infinito.
-- 
L'idiozia trascende il mezzo con cui viene espressa.

 di restituirla.
In realtà Unix dovrebbe usare _tutta_ la memoria che ha a disposizione
per poi ripartizionarla man mano che apri nuove applicazioni.
Non so se OSX si comporta nello stesso modo, FreeBSD si.
  ngw

 ho messo questa frase in babelfish ma non mi è servito
quando un programma alloca un blocco di memoria la puo' chiedere di tipo
wired ovvero tale che non possa essere swappata su disco dalla memoria
virtuale
se c'e' un leak ovvero se il programma si *dimentica* per qualche motivo
(un bug) di rilasciare quel blocco di memoria il danno e' molto piu'
percepibile, in quanto diminuisce la ram disponibile, di quando si
dimentica di rilasciare un blocco di memoria non wired (che finisce con
l'occupare spazio solo su disco)

 l'occupare spazio solo su disco)
bisogna vedere se osx permette di usare tanta più ram quanta più ce ne è 
per poi prendersela quando finisce: la mia paura è che invece alla fine 
inizi a swappare.
-- 
http://loscimmiotto.splinder.com/

 inizi a swappare.
le mie precisazioni riguardavano la perniciosità di un leak, e tieni
conto che ben pochi programmi allocano memoria wired
quello che osservi tu ha invece come probabile spegazione quanto
osservato da macosten sull'implementazione del malloc
ovvero all'aumentare del runtime programmi tendono ad occupare tanta
memoria quanta quella del momento di massima occupazione nel tempo sin
li' trascorso

 al sistema.
uhm... sai che mi hai incuriosito? Mi piacerebbe conoscere i dettagli
dell'implementazione, che immagino siano parte di Darwin
-- 
El sol salió anoche y me cantó