加速IntelliJ-Idea

我正在使用intelliJ进行Scala开发,上周获得了8 GB的新RAM,所以我想:有时间使用它。 我检查了我的任务pipe理器,发现使用约250MB的intelliJ 。 从日食我知道,调整JVM选项帮助了很多提高速度,所以我GOOGLE了…

并发现这一个OS X我无法立即findJVM选项,所以我开始调整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位。

我目前的虚拟机选项 ,位于

 ...\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 ,这是

桌面应用程序的接受select,但我最近更改为吞吐量收集器。 因为有了一个快速的机器和足够小的堆,你有快速的停顿,更多的吞吐量,没有碎片问题(ijuma。#scala)

变化:

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

现在我会坚持这些select。 我真的很想知道你的经验。

哪些选项最适合你? 如何在通过.bat运行intelliJ时隐藏此cmd窗口? 🙂

顺便说一句,这是调整intelliJ的另一个链接。 基本上它说在第20/21号closuresWindows恢复和防病毒的系统目录。

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

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

请参阅超级用户的Win 7 64位RAM驱动器或这一个 。 1 GB似乎对我来说很好。

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

有关于调优Eclipse的类似post:

  • Eclipse Helios 3.6
  • Eclipse Juno 4.2
  • 指定JVM以启动Eclipse

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

这个组合对于我在小牛队中运行的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

关于:

如何在通过.bat运行intelliJ时隐藏此cmd窗口?

使用“开始”命令和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% %* 

对于IntelliJ来说,最有用的事情是为磁盘caching提供大量的空闲内存 。 IntelliJ在caching文件中保存了大量的处理工作。 如果有足够的可用内存,这种方法效果很好,但是如果磁盘caching有限,则会看到经常性的长时间停顿。

我会build议-XX:+UseConcMarkSweepGC而不是G1

我也工作本地副本的文件,以尽量减less文件访问延迟。

顺便说一句 :对于我所在的项目,我注意到使用24 GB的机器和使用48 GB的机器之间的区别,即使最大堆设置为2 GB;)

前一段时间,我正在寻找加速我的项目编译的方法,那就是结果。 这不是IntelliJ IDEA本身,但是当(重新)构build一个大型项目时会有很大的帮助,我猜也可以和任何其他的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中,打开Project Structure(默认为Ctrl+Alt+Shift+S ),然后进入Project – 'Project compiler output'并将其移动到RAM磁盘挂载点:

 /tmp/projectName/out 

(我已经添加了projectName文件夹,以便在需要时可以轻松find它,或者可以同时处理多个项目)

然后,进入Modules,在你所有的模块中selectPaths并select'Inherit project compile output path',或者如果你想使用自定义编译输出path,按照你的方式修改'Output path'和'Test output path'它在之前编译输出。

就这样,伙计们!

PS几个数字:不同情况下我目前编译项目的时间(大约):

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

PPS如果您使用SSD磁盘,除了编译加速之外,您还可以减less对磁盘的写入操作,这也将有助于您的SSD快乐地生活;)

我已经做了一些试验,发现为了减lessGC暂停,以下组合效果最好:-XX:+ UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB = 50。

我也不会让堆太大,512或甚至更小对我来说可以。 否则,当它变满时,GC将不得不走完这一切需要一些时间。

你可以在这里find好的提示。 例如,在closures“closures同步文件”function之后,从IDEA切换到另一个应用程序的速度,反之亦然。

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

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

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

有了这个插件,你可以:

  • 自动调整虚拟机选项
  • 禁用类validation
  • 清理系统caching
  • configuration外部构build工具
  • validation最新的Oracle JDK
  • 跳过构build并重新部署

不知道为什么还没有提到 – 你可以启用Power Save mode ,这将closures许多IJ后台活动,包括Files Synchronization 。 一些文章说,可以在项目结构选项中禁用文件同步(比如@ OJ278回答的文章),但是我在IJ 14中找不到这个选项,但是Power Save mode似乎禁用了它。

我有一个相当大的代码库( AOSP源代码),所以HD活动由于背景文件同步是烦人的… … –

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

 -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