23

I was reading this blog post about the experience of a team using Intellij Idea for large maven projects and have also looked at a similar question posted around 2 years back for IDEA v.10.0.2.

One of the tips mentioned in the former made a whole lot of sense :
Move C:\Users\$user\.IntelliJIdea12 into a folder not access-scanned by the antivirus.

I have searched around for performance centric VM options and currently my idea64.exe.vmoptions looks like this :

-Xms1200m
-Xmx1200m
-XX:MaxPermSize=200m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC
-XX:ReservedCodeCacheSize=64m
-XX:+UseCodeCacheFlushing
-Dsun.io.useCanonCaches=false

Questions

  1. Do you have any more such tips to improve Intellij IDEA (12.1.3, 64 bit) performance with large/huge maven projects ?

  2. Could you please share discoveries you have made w.r.t VM options in idea64.exe.vmoptions and/or IDEA configuration in idea.properties.

  3. I have tried using JDK 7 to startup IDEA but this does not seem to terribly affect it's performance one way or the other. If you have tried doing so, did you experience the same ?

4

3 回答 3

26

正如@CrazyCoder 所建议的,我按照官方常见问题解答中关于此事的步骤进行操作:

IntellJ IDEA 性能问题的常见解决方案

具体来说,以下似乎产生了明显的影响:

  1. 将 移动c:/Users/$user/.IntelliJIdea12到 McAfee 的按访问扫描仪排除的位置,并更新$INTELLJ_INSTALL_FOLDER/bin/idea.properties为指向新位置,如下所示(c:/devMcAfee 排除的文件夹在哪里):

    idea.config.path=c:/dev/.IntelliJIdea12/config
    idea.system.path=c:/dev/.IntelliJIdea12/system
    idea.plugins.path=c:/dev/.IntelliJIdea12/config/plugins
    idea.log .path=c:/dev/.IntelliJIdea12/system/log

  2. 博客文章中记录的$INTELLJ_INSTALL_FOLDER/bin/idea.properties集合中。idea.jars.nocopy=true

  3. 回归股票$INTELLIJ_INSTALL_FOLDER/bin/idea64.exe.vmoptions。剩下的唯一更改是针对 64 位 JVM 的堆大小过低中建议的更改。这是我目前在该文件中的内容:

    -Xms1200m
    -Xmx1200m
    -XX:+UseCompressedOops
    -XX:MaxPermSize=350m
    -XX:ReservedCodeCacheSize=
    96m -XX:+UseCodeCacheFlushing
    -ea
    -Dsun.io.useCanonCaches=false
    -Djava.net.preferIPv4Stack=true

  4. 禁用 Git 集成插件,因为我主要使用命令行 Cygwin-Git。

  5. 监控很有用.IntelliJIdea12/idea.log。例如:我在尝试打开项目中的 zip 文件时发现它经常记录错误后,我禁用了 osmorc(用于 OSGI)插件。示例错误:

    警告 - pi.vfs.impl.jar.JarHandlerBase - 打开 zip 文件时出错:C:\dev\a-maven-project\pom.xml java.util.zip.ZipException:在 java.util 处打开 zip 文件时出错。 zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.(ZipFile.java:127)
    at java.util.zip.ZipFile.(ZipFile.java:143)

  6. 禁用所有我不需要的插件。当前禁用插件的列表是:

    禁用插件:ASP (0.1), Android Designer, Android Support (10.0), Atlassian Connector for IntelliJ IDE (3.0.9, SVN:1212171008), Base Cucumber (1.0), BashSupport (1.1beta16), CFML Support (3.53), CheckStyle-IDEA (4.2)、ClearCase 集成 (2.0)、Cloud Foundry 集成 (1.0)、CloudBees 集成 (1.0)、Commander (1.0.0)、复制为 HTML (0.8.1)、Cucumber for Groovy (1.0)、Cucumber适用于 Java (1.0)、Database Navigator (3.0.2501)、Describe Key (0.3)、Drools Support (1.0)、Eclipse Integration (3.0)、Flash/Flex Support (1.0)、GWT Support (1.0)、Geronimo Integration (1.0) )、Git 集成 (8.1)、GitHub、Google App Engine 集成 (1.1.4)、Grep 控制台 (1.1)、GuiceyIDEA (8.0)、HAML、IDEtalk (1.0)、IdeaVim (0.28)、标识符荧光笔 (3.62)、IntelliJad Plus (0.5.6)、JBoss 集成 (1.0)、JBoss jBPM (2.0.0)、JRebel Plugin (2.0.2), JavaFX (1.0), Key Promoter (1.0.11), Log4JPlugin (1.02), Markdown (0.8.3), Osmorc (1.4.3), Perforce Integration (2.0), PluginUpdateNotifier (2.0. 3)、RemoteTail (0.3.4)、Resin Integration (8.1)、Ruby (5.4.0.20130410)、SQL Query Plugin (2.2)、SSH Remote Run (0.1)、Seam Pageflow Support (1.0)、Seam Pages Support (1.0) , Seam Support (1.0), SmarterEditor (0.8.3), Struts Navigator Plugin (1.3.4), Subversion Integration (1.1), TFS Integration (999.999), Tapestry support (1.0), TestNG-J (8.0), UI Designer , UI Designer (Core), Vaadin Support (1.0), Visual SourceSafe Integration (2.0), WebLogic Integration (1.0), WebSphere Integration (1.0), ZKM-Unscramble (1.0), dmServer Support (0.9.5), hg4idea (10.0) )、soapUI 插件 (3.5)Osmorc (1.4.3), Perforce Integration (2.0), PluginUpdateNotifier (2.0.3), RemoteTail (0.3.4), Resin Integration (8.1), Ruby (5.4.0.20130410), SQL Query Plugin (2.2), SSH Remote Run (0.1)、Seam 页面流支持 (1.0)、Seam 页面支持 (1.0)、Seam 支持 (1.0)、SmarterEditor (0.8.3)、Struts Navigator 插件 (1.3.4)、Subversion 集成 (1.1)、TFS 集成 (999.999) ), Tapestry 支持 (1.0), TestNG-J (8.0), UI Designer, UI Designer (Core), Vaadin Support (1.0), Visual SourceSafe Integration (2.0), WebLogic Integration (1.0), WebSphere Integration (1.0), ZKM -Unscramble (1.0)、dmServer 支持 (0.9.5)、hg4idea (10.0)、soapUI 插件 (3.5)Osmorc (1.4.3), Perforce Integration (2.0), PluginUpdateNotifier (2.0.3), RemoteTail (0.3.4), Resin Integration (8.1), Ruby (5.4.0.20130410), SQL Query Plugin (2.2), SSH Remote Run (0.1)、Seam 页面流支持 (1.0)、Seam 页面支持 (1.0)、Seam 支持 (1.0)、SmarterEditor (0.8.3)、Struts Navigator 插件 (1.3.4)、Subversion 集成 (1.1)、TFS 集成 (999.999) ), Tapestry 支持 (1.0), TestNG-J (8.0), UI Designer, UI Designer (Core), Vaadin Support (1.0), Visual SourceSafe Integration (2.0), WebLogic Integration (1.0), WebSphere Integration (1.0), ZKM -Unscramble (1.0)、dmServer 支持 (0.9.5)、hg4idea (10.0)、soapUI 插件 (3.5)1)、Seam Pageflow Support (1.0)、Seam Pages Support (1.0)、Seam Support (1.0)、SmarterEditor (0.8.3)、Struts Navigator Plugin (1.3.4)、Subversion Integration (1.1)、TFS Integration (999.999) , Tapestry 支持 (1.0), TestNG-J (8.0), UI Designer, UI Designer (Core), Vaadin Support (1.0), Visual SourceSafe Integration (2.0), WebLogic Integration (1.0), WebSphere Integration (1.0), ZKM- Unscramble (1.0)、dmServer 支持 (0.9.5)、hg4idea (10.0)、soapUI 插件 (3.5)1)、Seam Pageflow Support (1.0)、Seam Pages Support (1.0)、Seam Support (1.0)、SmarterEditor (0.8.3)、Struts Navigator Plugin (1.3.4)、Subversion Integration (1.1)、TFS Integration (999.999) , Tapestry 支持 (1.0), TestNG-J (8.0), UI Designer, UI Designer (Core), Vaadin Support (1.0), Visual SourceSafe Integration (2.0), WebLogic Integration (1.0), WebSphere Integration (1.0), ZKM- Unscramble (1.0)、dmServer 支持 (0.9.5)、hg4idea (10.0)、soapUI 插件 (3.5)WebSphere 集成 (1.0)、ZKM-Unscramble (1.0)、dmServer 支持 (0.9.5)、hg4idea (10.0)、soapUI 插件 (3.5)WebSphere 集成 (1.0)、ZKM-Unscramble (1.0)、dmServer 支持 (0.9.5)、hg4idea (10.0)、soapUI 插件 (3.5)

于 2013-06-09T08:18:41.043 回答
5

IntelliJ IDEA 2017.2添加了非常好的功能,这在处理大型项目时很有帮助。基本上,您可以标记 IDEA 将加载哪些模块,哪些不加载。IDE 不会以任何方式触及已卸载的模块。它们不会被索引、搜索,也不会在检查时进行重构。加载/卸载模块可以在加载/卸载模块对话框中快速配置。可以使用打开对话框

项目树窗口→右键单击文件→加载/卸载模块...

在此处输入图像描述 暂时减少 IDEA 使用的模块数量将大大提高大型项目的性能。您可以在我写的博客文章中找到有关此功能和 IntelliJ IDEA 其他性能调整的更多信息: IntelliJ IDEA 提示和技巧:提高性能

于 2017-08-09T08:10:55.683 回答
4

有时您可能会在大型项目中耗尽内存。大型 Maven 项目的导入过程随后失败。
因此,如果您项目的任何模块都用红线下划线并且您会看到

Exception java.lang.OutOfMemoryError: GC overhead limit exceeded

在它上面,转到“设置 -> 构建工具 -> Maven -> 导入”,然后在那里找到“导入器的 VM 选项”选项。增加限制,将其设置为-Xmx1g(或更多)。

(资源)

于 2015-09-30T07:16:51.783 回答