IntelliJ IDEA 是一个基于 Java 的集成开发环境(Integrated Development Environment, aka IDE), 这意味着很容易配置虚拟机的系统占用。Jetbrains 家默认给了一个很差的配置,这让我们可以在很差的机器上也能很容易跑起来,但同时意味着在好一点的机器上,也是即便系统有很多资源依然慢得要死。

不过如前文所说,这一切都可以靠配置很容易解决。 以 OS X举例,假如 IntelliJ IDEA 这个 App 在 ~/Applications/ 目录下(当然,个人洁癖,你的也可能在 /Applications/) 下,请自行替换。

我可以在 ~/Applications/IntelliJ\ IDEA.app/Contents/bin/ 目录下找到一个文件名叫 idea.vmoptions

$ ls -al ~/Applications/IntelliJ\ IDEA.app/Contents/bin/
total 9248
drwxr-xr-x  17 yu  staff      578 May 14 21:11 .
drwxr-xr-x  13 yu  staff      442 May 14 21:09 ..
-rw-r--r--   1 yu  staff      136 May 14 20:11 appletviewer.policy
-rw-r--r--   1 yu  staff      597 May 14 21:01 idea.properties
-rw-r--r--   1 yu  staff       92 May 14 21:01 idea.vmoptions
....

copy 这个文件, paste 到 ~/Library/Preferences/IntelliJIdea2016.1 下,并进行编辑即可。 其中 IntelliJIdea2016.1 这个是根据版本等的不同而各有不同。

默认文件大致是这样的:

-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops

我修改后如下:

-Xms2g
-Xmx6g
-XX:MaxPermSize=4g
-XX:ReservedCodeCacheSize=2g
-XX:+UseCompressedOops

m,g作为后缀,和普通的 jvm 配置参数一样。内容尽可以随便写,不过有个特别的,高亮的 "-XX:ReservedCodeCacheSize" 结果不能超过 2 g,不然错误如下:

yu$ /Users/yu/Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea
2016-06-02 16:22:25.320 idea[28721:1467259] Value of IDEA_JDK: (null)
2016-06-02 16:22:25.327 idea[28721:1467272] fullFileName is: /Users/yu/Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions
2016-06-02 16:22:25.327 idea[28721:1467272] fullFileName exists: /Users/yu/Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions
2016-06-02 16:22:25.327 idea[28721:1467272] Value of IDEA_VM_OPTIONS is (null)
2016-06-02 16:22:25.327 idea[28721:1467272] Processing VMOptions file at /Users/yu/Library/Preferences/IntelliJIdea2016.1/idea.vmoptions
2016-06-02 16:22:25.327 idea[28721:1467272] Done
Invalid ReservedCodeCacheSize=4096M. Must be at most 2048M.
2016-06-02 16:22:25.336 idea[28721:1467272] JNI_CreateJavaVM (/Users/yu/Applications/IntelliJ IDEA.app/Contents/jre/jdk) failed: 4294967295

另外,懒得 copy&paste 也可以直接编辑 Application 下的内容,效果同样,不过不推荐这么做,因为随着软件更新,它可能被当作过期配置被误删掉。

References:

来自的你,很高兴你能看到这儿。若本文对你有所用处,或者内容有什么不足之处,敬请毫不犹豫给个回复。谢谢!