NetBeans使用心得:内存和垃圾收集机制配置

时间:2023-01-02 20:03:25
NetBeans的缺省的内存配置偏低,只有128M,实际上Eclipse的缺省配置为256M,对于NetBeans这样拥有如此之多的功能,却才使用128M是不太合适的。曾经在别人的博客上看到,最佳的内存配置应该为物理内存的 1/3,如果小于这个值,NetBeans就难以发挥全效,如果大于这个值就会造成操作系统内存抖动。就NetBeans5.5来说,官方网站上规定的最小内存是512M,推荐内存1G,这一点和其他Java IDE一样,比如Eclipse官方规定的最小内存居然是1G。这让我不得不叹息我们的电脑实在太落后了。我家里的工作机才256M,后来买了512M添上去,总共才768M,因此按照1/3原则,我把NetBeans设置为256M。如何设置这个值呢?同前文一样要设置启动文件 /etc/netbeans.conf,打开启动文件,将netbeans_default_options一行中的-J-Xmx选项设置成256M就可以了,如下:

netbeans_default_options=="-J-Xms32m -J-Xmx256m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true"

使用NetBeans的缺省配置,在长时间的运行后,往往会突然间僵住了,没有响应,这是因为JVM缺省的垃圾收集机制不使用增量式并行收集,而是隔断时间后,等内存垃圾积累到一定程度,完全锁定甚至暂停虚拟机,进行垃圾收集。可以将这种垃圾收集机制改成增量式并行收集,避免这种僵死。同样是改动 netbeans_default_options,在行后加上:

netbeans_default_options=="-J-Xms32m -J-Xmx256m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled"

总的来说,如果你懒得想这些,采用下面的配置比较不错:

netbeans_default_options="-J-Xms32m -J-Xmx256m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled --fontsize 14"