加速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