加速IntelliJ-Idea

Ste*_* K. 91 java windows performance intellij-idea

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

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

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

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe
Run Code Online (Sandbox Code Playgroud)

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT
Run Code Online (Sandbox Code Playgroud)

并调整"开始"

蝙蝠JDK_HOME现在寻找并使用64位.

我当前的VM选项,位于

...\IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe.vmoptions
Run Code Online (Sandbox Code Playgroud)

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC
Run Code Online (Sandbox Code Playgroud)

而不是-XX:+UseParallelGC,你可以使用-XX:+UseConcMarkSweepGC,这是

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

变化:

-XX:+UseConcMarkSweepGC //removed
// removed, because not needed with the lastest JVM.
    -XX:+UnlockExperimentalVMOptions
    -XX:+DoEscapeAnalysis
    -XX:+UseCompressedOops
Run Code Online (Sandbox Code Playgroud)

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

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

顺便说一句,这是调整intelliJ的另一个链接.基本上它在p.20/21上说关闭Windows恢复和系统目录的防病毒.

加快的IntelliJ另一种方法是把上的IntelliJ系统文件夹RAMDRIVE(感谢OlegYch | H).

from idea.properties 
idea.system.path=${idea.home}/.IntelliJIdea/system
Run Code Online (Sandbox Code Playgroud)

请参阅Win 7 64位RAM驱动器的超级用户超级用户.1 GB对我来说似乎没问题.

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

调整Eclipse有类似的帖子:

adb*_*ben 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
Run Code Online (Sandbox Code Playgroud)

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

  • 你在那里有很多重复 (3认同)
  • 小心这个`-XX:+ UseCompressedStrings`,在你的清单上,这打破了我,其余的工作. (3认同)
  • 谢谢@adben,它在我的电脑上大大改进了IJ.但是我不得不删除`MaxMetaspaceSize`,`MetaspaceSize`,`UseCompressedStrings`,因为它们在Linux x86_64上的IJ 14中不受支持.`UseCompressedOops` ddin也不适合我.提示:从命令行运行IJ以查看错误消息,在linux上它是`idea.sh` (2认同)

Yan*_*ron 28

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


Dil*_*nga 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% %*
Run Code Online (Sandbox Code Playgroud)

将其更改为:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 19

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

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

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

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

  • 对我来说,最重要的实现是,当它暂停时,它不是由于GC,而是必须重新读取磁盘上的数据. (4认同)
  • 48GB机器和24GB机器之间的差异可能是由于使用额外内存的文件系统/ OS级别缓存. (3认同)

unc*_*Lem 19

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

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

RAM磁盘设置

打开fstab

$ sudo gedit /etc/fstab
Run Code Online (Sandbox Code Playgroud)

(而不是gedit你可以使用vi或任何你喜欢的)

设置RAM磁盘挂载点

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

tmpfs /var/tmp tmpfs defaults 0 0
Run Code Online (Sandbox Code Playgroud)

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

tmpfs /var/tmp tmpfs defaults,size=512M 0 0
Run Code Online (Sandbox Code Playgroud)

项目设置

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

/tmp/projectName/out
Run Code Online (Sandbox Code Playgroud)

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

然后,转到模块,在所有模块中转到路径并选择"继承项目编译输出路径",或者,如果要使用自定义编译输出路径,请按照您的方式修改"输出路径"和"测试输出路径"它之前是项目编译器输出.

总而言之,伙计们!

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

HDD:     80s
SSD:     30s
SSD+RAM: 20s
Run Code Online (Sandbox Code Playgroud)

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