https://qiita.com/sasaki_hir/items/a00215b7dfe2c3279a0b
会社で支給するPCのスペックについて、どういうものが良いのか、よく思案します。(僕は情シスではないのですが) 要は、エンジニアの生産性です。 最近はなんでもブラウザを利用するようになっていて、例えばクラウドを利用した開発や運用ならそのクラウドのWebページを複数開く必要があるし、システムによっては監視アプリケーションや運用に使うアプリや開発自体もWebでやる場合があると思います。
で、私のローカル環境について言うと、今使っているのは32GBメモリのPCなのですが、ブラウザって、タブごとに数十MB~数百MB(大体200~300MB, 大きいときは500MBなど)使ってて、ブラウザだけでめっちゃメモリ食うんですよね。
以下は、FirefoxでAWSの開発/ステージング/本番環境の検証や運用を1日やっていたときの、タスクマネージャでのfirefox.exeの各タブ(=プロセス)でのメモリ消費です。
なお、僕の場合は、AWSで構築したアプリケーションのSEをやっていて、主なPCの使い方は以下となります
それ以外では普通にエディタを数種常時開いているのと、たまにIDE(Eclipse, IntelliJ, SQL Developerなど)を開いています。他に、Slackのネイティブアプリ, ウィルス対策ソフト, エクスプローラ, cftmon.exe(IME関連)がそれぞれメモリを数百MB消費していますが、主にはブラウザがかなりメモリを消費している感じです。
そのような利用状況で、あるときWSLが突然反応しなくなりました。この状態には慣れていて、おそらくメモリ不足です。このときにタスクマネージャは以下のような感じでした。
Windowsのメモリ不足かの判断は、コミット済みの左の数値を見ます。 私のPCはメモリが32GBのっていて、当初それは潤沢だと思っていたので、仮想メモリを無効にして利用しています。なので、物理メモリ = 仮想メモリとなります。仮想メモリは普通はOSデフォルトのままで良いと思うのですが(Windowsだと大体物理メモリの1.5倍程度を目安として、自動的に伸長されます。サーバではこの設定の方がコアダンプ生成に有効です。あとOOME防止が優先)、僕はインフラエンジニアで、メモリ消費について自分でコントロールする気概だったのと、このPCを使う前のPCではもっと小さいメモリサイズのPCを使っていたので32GBメモリはかなり潤沢になり仮想メモリ不要かも感があったのと、仮想メモリを無効化することでSSDの寿命を延ばすメリットがあると思ったので、仮想メモリはOFFりました(wslでもswap使わない設定を入れてます)
で、普段逐一タスクマネージャでメモリ使用量を監視しながら使ってるのですが、やはりブラウザで調べものをするためにあれこれページを開いたり、AWSのサービスの検証や調査などでAWSサービスの複数ページを開いたりすると、メモリ使用量が25GB~32GB程度まで増えます。
現在、ブラウザでメモリ消費の少ないものは無いと思っていて、たくさんページを開くならどのブラウザを使ってもそれなりにメモリ消費が大きいと思っています(上述のとおり、タブごとに数百MBのメモリ消費をしていたりします)
また、Windowsのメモリ消費の見え方は要注意だと思っていて、タスクマネージャのプロセスタブで、各ブラウザが合計どのくらいメモリを消費しているか確認できたり、詳細タブで、各ブラウザの各タブ(それぞれブラウザと同じexe名)がどのくらいメモリを消費しているかを確認できるのですが、どちらも実際のメモリ消費とは異なる値が表示されます。これはタスクマネージャの詳細タブでコミットサイズ列を表示した上で、例えば適当なブラウザで、色んなWebサイトを30個とか開いて、タスクマネージャでのコミットサイズとそのブラウザのプロセスでのコミットサイズを確認後、ブラウザ自体落としてみて、落とした後のメモリ使用量(パフォーマンスタブのコミット済みの左の値)を確認すると分かります。明らかに、各ブラウザでの各プロセス(各タブ)の合計のコミットサイズより、ブラウザを落としたあとのメモリ使用量(コミット済みの左の数値)の低下度合いは大きいです。
PCを数日上げっぱなしにして、複数ブラウザで多数のタブを開いた状態でメモリ使用量が高い状態になって、そのとき多数のタブを開いたブラウザを1個落とすと、メモリ使用量が一気に7GBとか空いたりします。また、ブラウザ以外も含め全アプリを終了しても、OSのメモリ使用量は20GB程度使用したままになっています。タスクマネージャの詳細タブでメモリを 500MB以上消費してるプロセスはないし、全プロセスのコミットサイズを合計しても10GBとかいきません。で、ためしにエクスプローラのプロセスを落としてみたりすると、タスクマネージャでのexplorer.exeのコミットサイズ以上にメモリが大きく空いたりします。この辺がWindowsのメモリ管理の注意点かなと思っていて、実際にプロセスが使用しているメモリ量は確認できないのでは??(プロセスごとのメモリ使用量は当てにならない、本当はもっと使ってる)と思うところです。この意味不明なメモリ使用量を解放するにはPC再起動なのですが、再起動すると各ページをいちから開き直さないといけないので面倒です。