Tag: memory leaks

20
mar
Gestione “Smart” Della Memoria In Hybris : Parte II .
Postato da il 20-03-2010 alle ore 23:20:46


Come detto nell’ultimo articolo, negli ultimi commit di Hybris è stato inserito un garbage collector strutturato in modo tale da districarsi al meglio tra le varie ricorsioni e i vari deliri di allocazione nell’interprete .

Nell’articolo avevo anche detto che questo sistema, nonostante avesse il vantaggio di diminuire drasticamente l’utilizzo della memoria durante l’esecuzione di uno script, aveva lo svantaggio di diminuire anche le prestazioni complessive dato com’era strutturato l’algoritmo per determinare se un dato oggetto era deallocabile durante l’esecuzione dello script stesso, algoritmo che effettuava diversi controlli, tra i quali due loop (quelli che rappresentavano maggiormente il collo di bottiglia) sul frame della funzione chiamante e su quello della memoria principale.

Ebbene, sono un coglione XD .

Si avete letto bene, sono un coglione perchè avevo strutturato l’algoritmo ragionando “a posteriori” senza pensare che prevenendo questo controllo si poteva risolvere il problema ed aumentare anche le prestazioni rispetto a prima .

More…

Popularity: 6% [?]

20
mar
Gestione “smart” della memoria in Hybris .
Postato da il 20-03-2010 alle ore 15:01:26


Uno dei problemi che affliggeva Hybris sin dalla primissima release era il problema dell’utilizzo/spreco di memoria .

Chi si è cimentato nella lettura del codice, avrà probabilmente notato che nella funzione htree_execute , quella che in pratica deve eseguire l’alberazione del programma parserizzato, non venivano de allocati gli oggetti “deallocabili” .

Questo avveniva per due ragioni principali :

  1. Essendo una funzione fortemente ricorsiva, non si poteva stabilire a priori se un dato oggetto sarebbe stato necessario ad una ricorsione successiva od alla ricorsione “chiamante”.
  2. Data la forte generalizzazione della classe “Object“, non era facile stabilire a priori quali tipi di oggetto era possibile deallocare e quali no.

More…

Popularity: 8% [?]