加速IntelliJ-Idea

时间:2011-04-13 15:14:32

标签: java windows performance intellij-idea

我正在使用intelliJ进行Scala开发并且上周获得了 8 GB 的新RAM,所以我想:时间使用它。我检查了我的任务管理器,发现使用 ~250mb 的intelliJ。从eclipse我知道调整JVM选项有助于提高速度,所以我用Google搜索...

找到this one for OS X 我无法立即找到JVM选项,所以我开始调整 Xmx。在1 GB时,我意识到它不再启动了。我检查了intelliJ java版本,发现它已经过时了,32位。

因此,为了使用您当前的JDK和 64位,您必须将链接更改为:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

并调整“开始”

蝙蝠查找JDK_HOME并立即使用64位。

我当前的 VM选项,位于

...\IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe.vmoptions

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC

而不是-XX:+UseParallelGC,您可以使用-XX:+UseConcMarkSweepGC,即

  

桌面应用程序的可接受选择,   但我已经改变了吞吐量   收藏家最近。因为有了   快速的机器和足够小的堆,   你有快速暂停,更多的吞吐量   没有碎片问题   (ijuma。#sclala)

的变化:

-XX:+UseConcMarkSweepGC //removed
// removed, because not needed with the lastest JVM.
    -XX:+UnlockExperimentalVMOptions
    -XX:+DoEscapeAnalysis
    -XX:+UseCompressedOops

我现在坚持这些选择。我真的很想知道你的经历。

哪种选择最适合您? 如何通过.bat运行intelliJ时隐藏此cmd窗口? :)

顺便说一下,这是tuning intelliJ的另一个链接。基本上它在 p.20 / 21 上说要关闭系统目录的Windows还原和防病毒软件。

加速intelliJ的另一种方法是将intellij系统文件夹放在 ramdrive 上(感谢OlegYch | h)。

from idea.properties 
idea.system.path=${idea.home}/.IntelliJIdea/system

请参阅Superuser for Win 7 64bit RAM Drivethis one。 1 GB对我来说似乎没问题。

朋友给我的另一个提示是从防病毒软件中排除项目目录(扫描访问时)

有关于调整Eclipse的类似帖子:

12 个答案:

答案 0 :(得分:31)

这种组合对我在小牛队中运行的Intellij13非常有用:

2017年7月18日更新

# custom IntelliJ IDEA VM options

-ea
-server
-Xms2G
-Xmx4096M
-Xss2m
-XX:MaxMetaspaceSize=2G
-XX:ReservedCodeCacheSize=1G
-XX:MetaspaceSize=512m
-XX:+UseConcMarkSweepGC
-XX:+DoEscapeAnalysis
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+UnlockExperimentalVMOptions
-Djava.net.preferIPv4Stack=true
-Dsun.io.useCanonCaches=false
-XX:LargePageSizeInBytes=256m
-XX:+UseCodeCacheFlushing
-XX:ParallelGCThreads=8
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+PrintGCDetails
-XX:+PrintFlagsFinal
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=60
-XX:+CMSClassUnloadingEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseAdaptiveGCBoundary
-XX:+UseSplitVerifier
-XX:CompileThreshold=10000
-XX:+OptimizeStringConcat
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UnlockDiagnosticVMOptions
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseCompressedOops
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd

-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine

我将此设置更新为https://github.com/adben/config/blob/master/idea64.vmoptions

答案 1 :(得分:28)

对我来说,切换到SSD驱动器可以提高性能(特别是对于大型项目)。

答案 2 :(得分:20)

关于:

  

如何通过.bat?

运行intelliJ时隐藏此cmd窗口

同时使用'start'命令和javaw.exe,如果你有:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\java.exe
...
"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

将其更改为:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

答案 3 :(得分:19)

您可以为IntelliJ做的最有用的事情是为磁盘缓存提供大量可用内存。 IntelliJ在缓存文件中保存了很多处理工作。如果你有足够的可用内存,这种方法很有效,但如果你的磁盘缓存有限,你会看到定期的,持久的暂停。

我建议-XX:+UseConcMarkSweepGC而不是G1

我还使用文件的本地副本来最小化文件访问延迟。

BTW :对于我所在的项目,我注意到在使用24 GB的机器和使用48 GB的机器上工作之间的区别,即使最大堆设置为2 GB;)< / p>

答案 4 :(得分:19)

前段时间我一直在寻找加速项目编译的方法,结果就是这样。这不适用于IntelliJ IDEA本身,但在(重新)构建大型项目时会有很多帮助,我想,它也适用于任何其他IDE。此外,我描述了Linux方法,但我确信Windows拥有自己的RAM磁盘实现。

加速编译的最简单方法是将编译输出移动到RAM磁盘。

RAM磁盘设置

打开fstab

$ sudo gedit /etc/fstab

(而不是gedit,您可以使用vi或任何您喜欢的内容)

设置RAM磁盘安装点

我在系统的几个地方使用RAM磁盘,其中一个是/tmp,所以我只是将编译输出放在那里:

tmpfs /var/tmp tmpfs defaults 0 0

在这种情况下,您的文件系统大小不会受限制,但没关系,我的/tmp大小现在是73MB。但如果你担心RAM磁盘的大小会变得太大 - 你可以限制它的大小,例如:

tmpfs /var/tmp tmpfs defaults,size=512M 0 0

项目设置

在IntelliJ IDEA中,打开项目结构(默认为Ctrl+Alt+Shift+S),然后转到项目 - &#39;项目编译器输出&#39;并将其移动到RAM磁盘安装点:

/tmp/projectName/out

(我已经添加了projectName文件夹,以便在我需要到达那里时轻松找到它,或者同时使用多个项目)

然后,转到Modules,在所有模块中转到Paths并选择&#39; Inherit project compile output path&#39;或者,如果要使用自定义编译输出路径,请修改&#39;输出路径&#39;和&#39;测试输出路径&#39;你之前用它来编译编译器输出的方式。

总而言之,伙计们!

P.S。一些数字:在不同情况下我当前项目编译的时间(大约):

HDD:     80s
SSD:     30s
SSD+RAM: 20s

P.P.S。如果您使用SSD磁盘,除了编译加速,您将减少磁盘上的写入操作,因此它也将帮助您的SSD永远幸福地生活;)

答案 5 :(得分:4)

我做了一些实验,发现为了减少GC暂停,以下组合效果最好:-XX:+ UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB = 50.

我也不会让堆太大,512甚至更小也适合我。否则,当它变满时,GC必须全部耗尽,这需要一些时间。

答案 6 :(得分:2)

你可以在这里找到好的建议。例如,在关闭“关闭同步文件”功能后,从IDEA切换到另一个应用程序的速度显着提高。

http://hamletdarcy.blogspot.com/2008/02/10-tips-to-increase-intellij-idea.html

答案 7 :(得分:2)

不确定为什么还没有提及 - 您可以启用Power Save mode,这会关闭许多 IJ 后台活动,包括Files Synchronization。有些文章说可以在项目结构选项中禁用Files Sync(比如@ OJ278的回答文章),但我无法在 IJ 14 中找到此选项,但是{{1似乎禁用它。

我有一个非常大的代码库( AOSP 源代码),因此后台文件同步造成的HD活动很烦人......

答案 8 :(得分:1)

您可以使用intellij的优化器插件:

https://zeroturnaround.com/free/optimizer-for-intellij-idea/

使用该插件,您可以:

  • 自动调整虚拟机选项
  • 停用课程验证
  • 清理系统缓存
  • 配置外部构建工具
  • 验证最新的Oracle JDK
  • 跳过构建和重新部署

答案 9 :(得分:1)

adben提供的答案对于改善我的机器的性能非常有帮助。尽管我在阅读Dzone文章后略微覆盖了它,

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-ea

通过使用上述配置,他们提高了大型项目的性能,并且对我们的项目也完美无瑕。最后,我禁用了所有我不会使用的插件,这也使事情得到了改善。

参考:https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea

答案 10 :(得分:0)

我使用了这种组合,它在我的环境中正常工作

-server
-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+UseParNewGC
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=8
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=65
-XX:+CMSScavengeBeforeRemark
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ReservedCodeCacheSize=64m
-XX:-TraceClassUnloading
-ea
-Dsun.io.useCanonCaches=false

答案 11 :(得分:0)