Una lunga spiegazione sui mecanismi del ciclo di vita degli oggetti. Le roots, il garbage collector, la finalization e la freacheable queue, le generation sono stati gli argomenti di questa parte. Ancora una volta concetti che sono ben spiegati sul suo libro ma con una notevole quantità di particolari che definirei 'piccanti'.
Con piacere ho visto sottolineare tutti quei concetti sulla finalization queue che ho avuto modo di spiegare nel mio articolo sul garbage collector, e che sul libro sono poco dettagliati rispetto agli altri. L'importanza dell'uso del pattern dispose, la necessità di rinunciare, se possibile, al finalizzatore è stato un punto sottolineato ancora una volta con insistenza.
Il confronto di performance tra codice managed e unmanaged è l'argomento conclusivo. Codice managed che usa floating point già oggi è più performante del codice unamanged. Per il futuro c'è la convinzione che questo sarà vero anche per tutto il resto del codice.
Il codice scritto con C++ unmanaged è soggetto a problemi come il rebase delle dll, inlining meno potente, dipendenza specifica della cpu per cui si è compilato (codice specifico P2, P3, P4,..) mentre il jit ottimizza al runtime.
Per il futuro si aspettano ottimizzazioni delle chiamate a funzioni virtual; sui controlli di espressioni costanti; sulle variabili membro utilizzate più frequentemente; etc.