I’ve recently switched from Zend 5.5 to Netbeans (v7.0) . I’ve tried Eclipse, Eclipse PDT, and Zend Studio 8, but didn’t care much for any of them. Netbeans is tolerable, so I decided to focus on it as my main IDE, as such I had to research some JVM performance tuning because it was dog slow by default.

The default config looks like:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=384m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true"

Our goal is to increase the min and max memory limits so we can handle larger code bases. The flags you want to add (manually):


Min Heapsize (2GB): -J-Xms2048m

Max Heapsize (4GB): -J-Xmx4096M

Also, as noted in the config file, enable the following flags:

-J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled

So your final config should look like:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=384m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Xms2048m -J-Xmx4096m -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled"

IBM explanation of some of the min/max settings: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tprf_tunejvm.html

Also, if you have symlinks to deeper libraries, be sure to add the paths to said libraries to the ‘Ignored Folders’ under project properties, this will help reduce un-necessary scanning.

Update (1.27.2012)

There are a few more flags you should consider adding for your netbeans config. There is a new Garbage Collector as of 7.1 which really improved the performance of my netbeans install. You can read more @ Netbeans JVM Tuning. I appended the following flags at the end of my `netbeans_default_options` string (note: remove -J-XX:+UseConcMarkSweepGC because it will be replaced with UseParallelGC):

-J-Xverify:none -J-XX:+UseAdaptiveSizePolicy -J-XX:+UseParallelGC -J-Djava.net.preferIPv4Stack=true