Runner in the High

技術のことをかくこころみ

Intellij IDEAのVMオプションとVSCodeの設定をイジってフリーズを減らす

去年末にお金をケチって買ったiMac 2019(Core i3 3.6 GHz, 8GB)でIntellij IDEAとVSCodeを起動していると、文字の入力もできないくらいレインボークルクルが頻発して仕事どころじゃないことがここの所よくあった。

数年前に買ったThinkCentreで動かしているUbuntuのほうがまだ快適という謎もあり「さすがにコレはどうにかしたい」という強い意思からいろいろ調べてみた。

結果、どうやらアプリケーションが使うメモリサイズが大きすぎて、GCによるストップ・ザ・ワールドが頻繁に起こっているっぽいということが分かってきた。CPUをケチったせいでGCを捌ききれず、結局8GBもメモリを積んでいても無駄になるとは悲しい...

Intellij IDEAの設定

ということで、最大メモリサイズを1Gまで減らしみると、見違えるほどフリーズ時間が減った。

あとから気がついたが、実はUbuntuで動かしていたIntellijは元から最大メモリサイズが少なめの設定になっていた。こりゃどうりでサクサクなわけだよ。

-Xms128M
-Xmx986M
-XX:+UseConcMarkSweepGC
...

なお、G1GCみたいなメモリがたくさん使えること前提のGCアルゴリズムを選択するのもたぶん良くないだろうとということで、とりあえずConcurrent Mark Sweep GCを代わりに指定しておくことにした。

VSCodeの設定

また、VSCodeもそこそこ大きいGoアプリケーションを開くとレインボークルクルの頻発につながっていて非常に鬱陶しかったので、ファイルで使う最大メモリをデフォルト4GBとなってたところ1GBまで落とした。

加えてwatcherExcludeに.gitディレクトリ配下を追加してみた。

{
    "files.maxMemoryForLargeFilesMB": 1024,

    "files.watcherExclude": {
        "**/.git/objects/**": true,
        "**/node_modules/**": true
    }
}

これだけでめちゃくちゃいい感じになった。今までのストレスはなんだったのか。

メモリがたくさんあるからといって全部使えるとは限らない好例だったと思う。たくさんメモリを使うには、性能のいいCPUも必要ということが分かる。作業マシンへの投資をケチってはいけない。