从版本12升级后,为什么IntelliJ 13 IDEA这么慢?

Jee*_*oon 206 intellij-idea

虽然使用IntelliJ 13终极版一周,但它似乎真的很慢.

首先,整个IDE每隔一段时间停止一次.与12版本相比,Java编辑器的自动完成速度非常慢.

除了使用Dracula主题之外,我没有更改默认设置.

看来这不是我自己的问题.许多人建议将堆大小设置为高于默认值,或清除缓存,但我没有检查或测试这些建议.我是否需要更改某些设置以改善新版本的性能?

Jas*_*n D 247

从12升级后,我在IntelliJ 13中遇到了同样的问题.对我来说有用的是编辑bin文件夹中的idea64.vmoptions并将max heap设置为8 GB(512 MB),Max PermGen设置为至少1GB (是300MB).例如下面:

-Xms128m
-Xmx8192m
-XX:MaxPermSize=1024m
Run Code Online (Sandbox Code Playgroud)

重启后它会快得多.

在Mac上,此文件位于以下路径中: /Users/yourusername/Library/Preferences/IntelliJIdea13/idea.vmoptions

适用于Mac上的IntelliJ 14或15 /Applications/IntelliJ IDEA 14.app/Contents/bin/idea.vmoptions

适用于Mac上的IntelliJ 2016,2017或更高版本 /Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions

IntelliJ的2017更新似乎将此更改推回,因此您可能需要在更新后重新应用它.

在Ubuntu Linux上,此文件位于相对于安装目录的此路径中:

idea-IU-135.475/bin/idea64.vmoptions
Run Code Online (Sandbox Code Playgroud)

并为2016.2:

 ~/.IdeaIC2016.2/idea64.vmoptions
Run Code Online (Sandbox Code Playgroud)

在Windows 10(此处显示的社区版)上,这些文件位于:

C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1.3\bin\idea64.exe.vmoptions

  • 谢谢杰森..这似乎已经为我做了伎俩.即使只增加2GB(-Xmx2048m)堆也足以看到性能的显着提升. (19认同)
  • 从Java 8开始,`MaxPermSize`被忽略. (7认同)
  • 我总共有8GB内存并且更改为-Xms512m -Xmx850m -XX:MaxPermSize = 1024m对我没用. (3认同)
  • 在那种情况下,你尝试过-Xmx4096吗?您可能还想尝试像-Xmx2048或-Xmx3192这样的值正如@CarlKarawani指出的那样,即使2GB的堆增加似乎也足以提升性能. (2认同)
  • 有道理,似乎也有所不同,取决于机器. (2认同)
  • 你刚刚救了我的电脑,我正要把它从窗户上扔掉:> (2认同)

Nat*_*han 44

我注意到禁用许多插件确实有助于加速IntelliJ.例如,我不是在开发Android应用程序.关闭与Android开发相关的插件可加快加载时间,并使程序在我的机器上运行更顺畅.

  • 我删除了所有不使用的插件,或者不太可能很快就需要(例如支持Mecurical,国际化等).启动时间从字面上的MINUTES到大约10-15秒).现在的总体表现似乎也更加快捷.奇怪的是,在我的情况下,内存占用率没有太大变化,保持在820MB左右. (3认同)
  • 禁用subversion插件使我的cpu从100%下降到不到2%.如果您的IntelliJ 13很慢,它可能是一个插件,这应该是接受的答案. (3认同)

小智 25

就我而言,GIT集成似乎导致编辑器以13令人沮丧地放慢速度.

在打开GIT集成时,即使是注释,在大约30个字符之后,UI也会冻结一秒左右.它通常不长,但非常烦人.

我正在使用GIT 1.7.8.0.在Windows 7 64上运行,带有固态驱动器和12 GB ram以及带有8个CPU的intel I7.我尝试了各种各样的事情,比如更新idea64.exe.vmoptions以使用更多内存,例如-Xmx2400m和-XX:MaxPermSize = 2400m,-XX:ParallelGCThreads = 6,但它没有解决问题.

git存储库是1.3演出,有65,000个文件.

我在新的git存储库中创建了一个新的"grails"项目,没有问题.我在现有的大型git存储库中创建了一个新的grails项目,而intellij很慢.我通过打开项目设置对话框并删除git root来关闭git集成,问题就消失了.

我尝试通过13 UI禁用所有GIT后台操作,但它没有什么区别.我也尝试了GIT内置和本机模式,它没有任何区别.

在我的情况下,解决方法似乎是在我需要它之前禁用GIT集成,然后再重新添加git root.如果其他人可以验证相同的问题,那么我们可能会将其报告为问题.

  • 关闭git集成和ideavim对我来说显着提高了性能.谢谢! (2认同)

pau*_*l-g 14

在我看来,IntelliJ无意中使用JDK/JRE 1.8会导致性能大幅下降.这似乎会严重影响渲染性能,并导致一些意外的崩溃和死锁.

即使是一个小型的〜3KLOC项目,这也会使IDE无法使用(操作的延迟时间为1-2秒).

确保在运行intellij时使用JDK/JRE 1.7:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0_67 intellij
Run Code Online (Sandbox Code Playgroud)

(或等同于您的操作系统的任何东西)

您可以在帮助 - >关于 - > JRE下检查用于运行intellij的JRE.

  • 在Ubuntu 14.04上,这对我来说是一个巨大的帮助 (3认同)
  • 回到1.7使其在Ubuntu 14.04上的表现更好13.1.谢谢! (2认同)

tme*_*ans 13

好吧,我无法回复上面的工程师Dollery的帖子,因为我还没有50个代表......但我注意到了同样的事情.:关于hg4idea一个问题已报告已经http://youtrack.jetbrains.com/issue/IDEA-118529.

除了禁用hg4idea插件外,还没有修复.但如果结果证明是你的问题,请投票给错误!

编辑:JetBrains修复了构建IU-138-815中的错误!


Joc*_*fer 8

我遇到了类似的问题.在那种情况下,它是Subversion插件.(Mac Mavericks,SVN版本1.7.10)一旦我禁用此IntelliJ再次可用.

从jstack得到这个:

"Change List Updater" daemon prio=2 tid=10df3f000 nid=0x12a421000 runnable [12a41f000]
   java.lang.Thread.State: RUNNABLE
    at java.util.Collections.unmodifiableList(Collections.java:1131)
    at com.intellij.execution.configurations.ParametersList.getList(ParametersList.java:88)
    at com.intellij.execution.configurations.GeneralCommandLine.getCommandLineString(GeneralCommandLine.java:210)
    at com.intellij.execution.configurations.GeneralCommandLine.getCommandLineString(GeneralCommandLine.java:189)
    at org.jetbrains.idea.svn.commandLine.CommandExecutor.createProcessHandler(CommandExecutor.java:186)
    at org.jetbrains.idea.svn.commandLine.CommandExecutor.start(CommandExecutor.java:137)
    - locked <76afcdfb8> (a java.lang.Object)
    at org.jetbrains.idea.svn.commandLine.CommandExecutor.run(CommandExecutor.java:262)
    at org.jetbrains.idea.svn.commandLine.CommandRuntime.runWithAuthenticationAttempt(CommandRuntime.java:62)
    at org.jetbrains.idea.svn.commandLine.CommandUtil.execute(CommandUtil.java:206)
    at org.jetbrains.idea.svn.commandLine.CommandUtil.execute(CommandUtil.java:189)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineInfoClient.execute(SvnCommandLineInfoClient.java:120)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineInfoClient.issueCommand(SvnCommandLineInfoClient.java:104)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineInfoClient.doInfo(SvnCommandLineInfoClient.java:90)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineInfoClient.doInfo(SvnCommandLineInfoClient.java:232)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineStatusClient.doStatus(SvnCommandLineStatusClient.java:106)
    at org.jetbrains.idea.svn.SvnRecursiveStatusWalker.go(SvnRecursiveStatusWalker.java:79)
    at org.jetbrains.idea.svn.SvnChangeProvider.getChanges(SvnChangeProvider.java:89)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.a(ChangeListManagerImpl.java:686)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.a(ChangeListManagerImpl.java:596)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.d(ChangeListManagerImpl.java:480)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.access$1100(ChangeListManagerImpl.java:71)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl$ActualUpdater.run(ChangeListManagerImpl.java:387)
    at com.intellij.openapi.vcs.changes.UpdateRequestsQueue$MyRunnable.run(UpdateRequestsQueue.java:260)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)
Run Code Online (Sandbox Code Playgroud)

其他运行:

"Change List Updater" daemon prio=2 tid=124556000 nid=0x129c7a000 runnable [129c78000]
   java.lang.Thread.State: RUNNABLE
    at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
    at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
    at java.io.File.exists(File.java:733)
    at org.apache.xerces.parsers.SecuritySupport$7.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.xerces.parsers.SecuritySupport.getFileExists(Unknown Source)
    at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
    at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
    at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
    at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineStatusClient.parseResult(SvnCommandLineStatusClient.java:138)
    at org.jetbrains.idea.svn.commandLine.SvnCommandLineStatusClient.doStatus(SvnCommandLineStatusClient.java:118)
    at org.jetbrains.idea.svn.SvnRecursiveStatusWalker.go(SvnRecursiveStatusWalker.java:79)
    at org.jetbrains.idea.svn.SvnChangeProvider.getChanges(SvnChangeProvider.java:89)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.a(ChangeListManagerImpl.java:686)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.a(ChangeListManagerImpl.java:596)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.d(ChangeListManagerImpl.java:480)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.access$1100(ChangeListManagerImpl.java:71)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl$ActualUpdater.run(ChangeListManagerImpl.java:387)
    at com.intellij.openapi.vcs.changes.UpdateRequestsQueue$MyRunnable.run(UpdateRequestsQueue.java:260)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)
Run Code Online (Sandbox Code Playgroud)


小智 6

以下选项的最佳体验(idea64.exe.vmoptions):

    -server
    -Xms1g
    -Xmx3g
    -Xss16m
    -XX:NewRatio=3

    -XX:ReservedCodeCacheSize=240m
    -XX:+UseCompressedOops
    -XX:SoftRefLRUPolicyMSPerMB=50

    -XX:+UseParNewGC
    -XX:ParallelGCThreads=4
    -XX:+UseConcMarkSweepGC
    -XX:ConcGCThreads=4

    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSParallelRemarkEnabled
    -XX:CMSInitiatingOccupancyFraction=65
    -XX:+CMSScavengeBeforeRemark
    -XX:+UseCMSInitiatingOccupancyOnly

    -XX:MaxTenuringThreshold=1
    -XX:SurvivorRatio=8
    -XX:+UseCodeCacheFlushing
    -XX:+AggressiveOpts
    -XX:-TraceClassUnloading
    -XX:+AlwaysPreTouch
    -XX:+TieredCompilation

    -Djava.net.preferIPv4Stack=true
    -Dsun.io.useCanonCaches=false
    -Djsse.enableSNIExtension=true
    -ea


Den*_*nis 5

75s - > 10s intellij启动.我所做的就是从使用默认的32位exe切换到使用64位exe.


Dan*_*anT 5

对我来说问题是一个nodes_modules文件夹,文件超过一千个.我必须将目录标记为已排除.

另请参阅列表中的可能问题.


归档时间:

查看次数:

89325 次

最近记录:

6 年,4 月 前