NetBeans: migliorare le prestazioni su MacOSX



Per programmare in java ho sempre utilizzato NetBeans: un bel prodotto, e contrariamente a molti altri sviluppatori che conosco lo preferisco a Eclipse.

Lo utilizzo su Windows, Linux e MacOSX: su quest'ultimo spesso il lavoro del 'garbage collector' provoca dei fastidiosi rallentamenti dell'interfaccia, rendendo spesso frustrante l'editing del codice.

Un modo per ovviare al problema è quello suggerito sul blog di Joshua Marinacci: aggiungere in pratica un'opzione allo script di avvio di NetBeans per forzare la VM a utilizzare una differente politica di garbage collection, nel nostro caso la Mark and Sweep.

In questo modo la VM utilizza una GC incrementale, che invece di attendere che la GC raggiunga una certa dimensione per 'fare pulizie' se ne occupa a intervalli ravvicinati e con dimensioni minori: questo comporta una 'distribuzione' del lavoro del garbage collector e quindi un aumento delle prestazioni percepibili.

La modifica è semplice: dalla finestra di terminale portarsi nella cartella della applicazioni (Applications/) e da qui in NetBeans.app/Contents/MacOS.

Editare con vi il file netbeans e sostituire questa parte
case "`uname`" in
Darwin*)
launchNbexec \
--jdkhome "$netbeans_jdkhome" \
-J-XX:+UseConcMarkSweepGC \
-J-Dcom.apple.mrj.application.apple.menu.about.name=NetBeans \
-J-Xdock:name=NetBeans \
"-J-Xdock:icon=$progdir/../nb5.5/netbeans.icns" \
--branding nb \
--clusters "$netbeans_clusters" \
-J-Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade \
-J-Dnetbeans.accept_license_class=org.netbeans.license.AcceptLicense \
${netbeans_default_options} \
"[email protected]"
;;

a questa
case "`uname`" in
Darwin*)
launchNbexec \
--jdkhome "$netbeans_jdkhome" \
-J-Dcom.apple.mrj.application.apple.menu.about.name=NetBeans \
-J-Xdock:name=NetBeans \
"-J-Xdock:icon=$progdir/../nb5.5/netbeans.icns" \
--branding nb \
--clusters "$netbeans_clusters" \
-J-Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade \
-J-Dnetbeans.accept_license_class=org.netbeans.license.AcceptLicense \
${netbeans_default_options} \
"[email protected]"
;;

(Va aggiunto in pratica lo switch -J-XX:+UseConcMarkSweepGC )

Salvare e chiudere il file e avviare NetBeans: niente più 'addormentamenti' dell'IDE!

N.B. Ho testato la procedura su NB 5.5: è probabile che per altre versioni lo script di avvio sia leggermente diverso: in ogni caso, lo switch da aggiungere è sempre lo stesso.

Published: November 05 2006

  • category: