如何提高Netbeans性能?

116

有没有一种真正的方法让Netbeans加载和工作更快?

它太慢了,当你编码一段时间后变得更糟。它吃掉我所有的RAM。


我正在使用Windows机器,具体来说是Windows Server 2008数据中心版x64,4GB RAM,3GHz Core 2 Duo处理器等。我正在使用x64 JDK。我使用NOD32防病毒软件,因为对于我来说,它是机器性能最好的。

在任务管理器中,netbeans.exe只显示不到20 MB,而java.exe则超过600 MB。

我的项目是一个J2EE Web应用程序,有500多个类,仅包括项目库(外部文件)不包含在内。当我说慢时,我的意思是Netbeans冻结了3、4、5分钟或更长时间。

如果它必须读取所有文件以获取文件状态(如错误警告、svn状态等),那么我的项目是否对Netbeans来说太大了?我能否禁用所有这些功能?是否可以设置为仅在打开文件时扫描?

我的CPU使用率通常为30%,并且所有工具都已打开,我的意思是Netbeans、MS SQL Manager、记事本、XMLSpy、任务管理器、Delphi和VirtualBox等。Netbeans比我的虚拟化系统占用更多的RAM。

在Linux中,它与Windows相同的机器一样慢(Ubuntu 8.04 x64)。

Netbeans团队改善了启动速度,但是当它打开时,它开始缓存全部内容。

我已经使用了一些JVM参数来设置高内存使用率和其他参数:"C:\ Program Files \ NetBeans Dev \ bin \ netbeans.exe" -J-Xms32m -J-Xmx512m -J-Xverify:none -J-XX:+ CMSClassUnloadingEnabled,但仍然很慢。


以下是一些问题,可以帮助我们更好地解决您的问题 :-)您能告诉我们您有多少RAM?使用什么操作系统?TaskManager显示Netbeans的情况如何?您的项目有多少个类?当您说慢时,您能以分钟、秒为单位给我们吗? - anjanb
你的机器听起来足够强大。它比我的快得多,我可以以很好的速度运行NetBeans。 唯一想到的是你正在使用64位操作系统。你是否在使用64位Java JDK? - s3v1
你使用的Netbeans版本是多少,你有多少RAM,你的操作系统是什么,你安装了多少个Netbeans插件。 - Andrei Ciobanu
你的机器很强大,绝对不会受到CPU/RAM限制。现代计算机大多数是I/O受限的,因此您应该检查您的硬盘驱动器参数(队列)。编辑:您应该编辑您的问题而不是发布答案。 - atamanroman
其他像VS或Eclipse这样的集成开发环境正常工作吗? - atamanroman
移除拼写检查器,twig模板是在完成netbeans.conf步骤后的关键步骤!但您将失去sympony框架!!! - MarcoZen
31个回答

60

当你的 NetBeansEclipse IDE 占用过多内存时,解决方法非常简单:

  1. 禁用你不使用的插件。
  2. 关闭你不工作的项目。

在我的 Linux Mint 和 Ubuntu 电脑上,我使用 NetBeans 7.0 时也遇到了类似的问题。 Netbeans 使用了超过 700 MiB 的空间和 50-80% 的 CPU。 于是我决定进行一些清理操作。 我安装了 30 个插件,但并没有使用其中大多数。 所以,我禁用了我不使用的插件,禁用了整整 19 个插件。现在内存使用量降至 400+ MiB,CPU 使用下降至 10%,最高不超过50%。

现在我的生活轻松多了。


4
支持关闭你未在工作中的项目。Netbeans会为每个打开的项目保留索引。 - Luis Lobo Borobia
@LuisLoboBorobia 禁用或卸载未使用的插件有什么区别吗? - SaidbakR
如果插件基于文件更改执行某些资源密集型操作,那么它肯定会产生影响。例如源代码版本控制所执行的监视操作。我不会启用未使用的插件。 - Luis Lobo Borobia
我不是很确定,但我认为它应该会影响整体性能。例如,我只安装了我实际使用的插件... - Ravish
当我关闭了我的其他项目,智能感知速度就像我所希望的那样敏捷!谢谢你! - Daedalus

52

只要你可以纵向扩展,不要花时间优化你的NB安装:获取SSD(以及更快的硬件)。

另外:

  • 为所有相关文件夹(例如,项目目录、临时目录)添加防病毒软件的例外(或者最好干脆卸载防病毒软件)。
  • 不要使用网络驱动器进行项目
    • 检查您的个人驱动器是否是本地的
    • 检查您的IDE是否使用非本地文件夹(例如%AppData%

29
我不完全同意。我的工作笔记本电脑配备了8GB RAM、256GB SSD和i5 CPU,在处理大型Hadoop项目时,使用的IDE非常缓慢,以至于我考虑切换到IDEA。我尝试了两倍的Xms、PermSize、垃圾收集器转换和添加一些设置,现在Netbeans运行良好!这要看情况而定。SSD和大内存固然有利,但这并不是提高IDE性能的全部。我认为,对于需要解析许多库的大型项目来说,默认设置效果不佳。 - SlovaN
这完全取决于您的项目大小。在普通项目中,快速硬件(侧重于IO)和AV配置比调整VM参数更有效。然而,在非常庞大的项目中可能会有所不同。 - atamanroman
太棒了,非常感谢!我通过在杀毒软件中排除我的项目文件夹,将编译所需的时间缩短了一半。 - Julien R.
对我来说,现在只需将-J-Xmx256m添加到配置文件中即可。我有足够的内存,所以实际上将其设置为512,在运行Ubuntu 18。关于选项的信息的好地方:https://performance.netbeans.org/howto/jvmswitches/index.html - Kyle Coots
是的,转向IDEA是一个选择。我也听说Netbeans 5.5“提高了速度”,供参考 https://www.reddit.com/r/java/comments/1en9ac/is_intellij_better_than_netbeans/ - rogerdpack
@SlovaN 转到Idea?什么?即使现在,那里的速度也慢得多。关闭NB中的所有项目(除了当前项目),感受差异。 - CodeToLife

25
  • 下载最新版本的Netbeans
  • 移除所有您不需要的插件。
  • 使用最新版本的Java

最新的NetBeans版本是6.9.1。 最新的JDK版本是1.6.0 build 21。 - OliCoder
1
如果你使用的是固态硬盘(SSD),那么你永远不应该进行碎片整理(defrag)。即使对于普通的硬盘驱动器(HDD),它也几乎没有任何性能提升。 - Firze
怎么做呢?虽然现代操作系统如Windows 7及以上版本已经自动进行了碎片整理。 - Dreaded semicolon
1
现代操作系统使用一种文件系统,不需要进行碎片整理等过去的操作。 - durduvakis

23
我们可以使用以下JVM选项来使NetBeans加载/运行更快。
JVM选项:-J-Xverify:none 此选项告诉JVM在类加载期间不验证字节码并避免预加载不必要的类。
如何设置:
编辑文件C:\Program Files\NetBeans <version>\etc\netbeans.conf (如果您将其安装在其他位置,请检查NetBeans安装文件夹)
找到以下一行代码:

netbeans_default_options="..."

将选项-J-Xverify:none添加到选项列表中。
重新启动NetBeans。

14
我对 Xverify:none 进行了谷歌搜索,前四个结果中有三个表示它永远不应该被设置。我不了解 JVM,也不知道这是否属实,但是我在这里留下这条评论,以提醒人们不要盲目复制和粘贴它而不去研究它实际上的作用。 - Andy

16

禁用Git、Subversion、本地历史记录、拼写检查和其他未使用的插件


2
大多数情况下,它们的性能并不会受到太大影响,而且对我来说,放弃 Git 是不可行的。实际上,我很想在工作日之间永远不关闭 NetBeans,这样我就不必每次等待加载过程了。 - svarog

5
我使用的是Windows 7。我建议右键单击NetBeans快捷方式,进入属性,在“快捷方式”选项卡上,在目标中添加-J-Xmx1024m -J-Xms256m
这将设置JVM的内存使用情况。Xms是最小值,而Xmx是最大值。
这是目标文本字段的值:
"C:\Program Files\NetBeans 7.1\bin\netbeans.exe" --jdkhome "C:\Program Files\Java\jdk1.6.0_10" -J-Dorg.netbeans.modules.php.dbgp.level=400 -J-Xmx1024m -J-Xms256m

自从我添加了那个属性,我的NetBeans运行速度非常快!

另一种尝试更多参考资料在这里

在你的Netbeans-Home下的etc目录中,编辑文件netbeans.conf。将-Xms-Xmx增加到允许程序编译的值。

netbeans.conf中的说明:

# Note that default -Xmx and -XX:MaxPermSize are selected for you automatically.
# You can find these values in var/log/messages.log file in your userdir.
# The automatically selected value can be overridden by specifying -J-Xmx or
# -J-XX:MaxPermSize= here or on the command line.

将值放入netbeans_default_options字符串中。例如:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true  -J-Dsun.awt.disableMixing=true -J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd --laf Nimbus"

如何加速/释放Windows内存:

  1. 禁用Windows更新:

    • 打开任务管理器,打开服务选项卡,禁用Windows更新:

disable win update

  1. 按下 Ctrl + R ,输入 Services.msc 并按回车键。
    • 启动类型 进行排序
    • 选择第三方(非 Windows)的自动运行 Automatic 的服务,右键单击,点击 属性 并将启动类型更改为 手动

services

  • 状态排序,并停止你认为无用的第三方应用程序的服务

2
这是做什么的?请加上一些解释。 - Starx
1
这将设置JVM的内存使用情况。 Xms是最小值,而Xmx是最大值。 我不知道这个调整的效果如何(我刚刚发现它),但显然您应该根据硬件适当调整值。 - Thibault Witzig

4
每个人都应该注意,Sun公司为Windows开发的Java虚拟机不使用共享内存。这意味着你给虚拟机分配的堆越大,它就会占用更多的内存。分配更大的堆的好处是减少垃圾回收,可能会使你运行的Java应用程序性能更快,但缺点是其他应用程序可能有较少的内存可用,因此你的系统可能会感觉更慢。

2
更多的堆实际上意味着更多的垃圾回收“停顿”时间,因为垃圾回收器必须扫描整个堆以查找“垃圾”对象。这可以通过使用不同的垃圾回收器来克服。 - Vincent

4

这是一台企业Windows电脑吗?如果是的话,过于激进的病毒扫描器可能会严重减缓现代IDE的运行速度。请检查任务管理器中使用大量CPU或磁盘读取的进程。


10
禁用公司电脑上的病毒扫描程序并不是提高性能的真正选择。 - Stroboskop

3
以下是我在 etc/netbeans.conf 中使用 G1 GC 和其他改进选项的 NetBeans 设置:

netbeans_default_options="-J-server -J-Xss4m -J-Xms256m -J-Xmx512m -J-XX:PermSize=256m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Xverify:none -J-XX:+UseG1GC -J-XX:+TieredCompilation -J-XX:+AggressiveOpts -J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd -J-Dorg.netbeans.editor.aa.extra.hints=true"

字体设置(swing.aatex 和后续)是可选的,根据需要进行设置或删除。
这些设置大大提高了我的 NetBeans 运行效率!

3
此外,还需对磁盘进行碎片整理。Netbeans在创建各种缓存时非常积极。其中大部分在某个时刻被持久化到磁盘上,这可能会影响启动时间。病毒扫描器(尤其是赛门铁克),桌面搜索引擎和任何其他侵入式I/O产品都可能严重降低性能。
我注意到Netbeans有时会很难处理,并且其性能在几乎相同规格的两台机器之间可能会有很大差异。我的工作机器性能很差,有时无法使用,但在家里的机器上使用时速度非常快(在许多情况下处理更大的项目)。

实际上在工作中对电脑进行了碎片整理,虽然没有真正对Netbeans产生影响,但是其他所有程序都变得更快了。 - svarog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接