linux user group brescia

immagine del castello

Archivio della mailing list

Cattiva free() e OpenOffice

Luca Giuzzi giuzzi a lugbs.linux.it
Lun 4 Ago 2003 13:58:43 UTC
On Sat, Aug 02, 2003 at 08:51:14PM +0200, Vernia Damiano wrote:
> 
> On Sat, 2 Aug 2003, Luca Giuzzi wrote:
> > Questa e' una buona cosa comunque in quanto riduce l'overhead nel momento
> > in cui effettivamente devi fare i calcoli.
> 
> 	Nell'implementazione originale avevo evitato di fare questa cosa 
> perche' pensavo che copiare qualche decina di interi (molte volte) fosse 
> piu' lento di assegnare valori a puntatori. Non ho considerato il problema 
> espresso (meglio di me) da Erix e nemmeno il tempo impiegato da malloc() e 
> free(), infatti [vedi sotto]
> 
Una cosa... se ti servono "piccole" quantita' di memoria, una opzione
utile potrebbe essere alloca() che alloca la memoria direttamente sullo
stack... forse in questo caso la cosa e' inutile, ma potrebbe
sempre servire...
> 
> 	Grazie del consiglio, ma non e' cosi' necessario abbia prestazioni 
> eccezionali. Solo che se la RAM usata continua ad aumentare rischio di 
> andare in "Out of space" prima del termine del processo. Questo e' il 

Piu' che altro il rischio che hai corso (e che potresti correre) e'
quello di evocare involontariamente il famigerato OOM_killer ...
 Quando e' esaurita completamente la memoria disponibile sulla macchina,
il sistema puo' decidere di reclamarne un po' in modo drastico, ovvero
uccidendo un processo `quasi a caso'. (*)

ciao,
 lg

(*) dico `quasi' in quanto l'oom_killer cerca di trovare il processo
seguendo una qualche euristica: guarda il file linux/mm/oom_kill.c
per i dettagli.





Maggiori informazioni sulla lista Lug