chromeのタブ開きすぎで重いとき、犯人はタブとは限らない
chrome タブ 開きすぎ 重い、と入力するとき、頭の中では原因の見当がついている。タブの枚数が多いから重い、というのは自然な推論で、実際に多くの場面で当たっている。ただし当たっていない場面もあり、そちらに当たっていた場合、タブを閉じる作業は数十分かけて何も改善しない。
先に切り分ける方法がある。Chromeには自分の中の何がどれだけ資源を使っているかを一覧にする画面があり、そこを並べ替えるだけで、上位に来ているのがタブなのか、それ以外なのかが分かる。ここでは、その一覧の読み方と、読み取れた種類ごとの手当てを見ていく。
公式の手順が、タブの次に名指ししているもの
Googleが公開している「Chrome の動作を速くする」の手順は、更新、タブを閉じる、と進んだあと、3番目で別のものを名指ししている。
開いているタブが多いほど、Chrome の動作は遅くなります。使用していないタブを閉じることをおすすめします。 出典: support.google.com
ここまでは想像どおりだが、続く手順では拡張機能を無効にすることと、タスク マネージャで資源を多く使っているタスクを止めることが並んでいる。そして探すべき対象として「バックグラウンド ページ」という項目が挙げられている。これはタブではない。ページを開いていなくても常に動き続けている、拡張機能の本体のことだ。
順番として意味があるのは、タブを閉じる作業が「効くかどうかを確かめずにできる唯一の対処」だからで、効果の大きさで並んでいるわけではない。実際には、開いているタブの合計より1つの拡張機能のほうが多く使っている状態は珍しくない。しかもそれは、タブを何枚閉じても減らない。
つまり最初にやるべきは、閉じることではなく、一覧を開いて並べ替えることになる。所要時間は1分ほどで、そのあとの作業がまったく変わる。
タスク マネージャを開いて、上から読む
手順は公式に書かれているとおりで、Chromeの右上にあるその他アイコンから「その他のツール」を開き、その中の「タスク マネージャ」を選ぶ。開いたら列見出しの「メモリ使用量」をクリックして、多い順に並べ替える。
この画面は、Chromeが内部でいくつのプロセスに分かれているかをそのまま見せている。だから行数は、開いているタブの枚数とは一致しない。多いこともあれば、少ないこともある。ここで違和感を持つのが正常で、その違和感が切り分けの入り口になる。
見るのはメモリだけではない。CPUの列も一緒に並べ替えてみると、別の顔が出ることがある。メモリを大きく使っている行は静かに場所を取っているだけで、ファンが回っている原因は、メモリの少ない行がCPUを回し続けていることだったりする。「重い」という言葉は、この2つを区別しない。
並べ替えた結果は、次の3通りのどれかになる。上位がタブで埋まっているか、上位に拡張機能が混じっているか、あるいは上位の数字がどれも小さくてChromeの中に犯人がいないか。以降は、この3通りに沿って進める。
行の種類は5つあり、それぞれ意味が違う
一覧に並ぶ行は、名前の付き方で種類が分かる。ページの題名がそのまま出ていればタブだが、それ以外の行が必ず混ざっている。
- タブ … ページの題名が出ている行。ここが上位を占めているなら、推論は当たっている
- バックグラウンド ページ … 拡張機能の常駐部分。タブを閉じても消えず、ブラウザを開いている間ずっと動く
- サブフレーム … ページの中に埋め込まれた別サイトの領域。動画の埋め込み、地図、決済の枠などがこれにあたり、1枚のタブが複数行を持つことがある
- GPUプロセス … 画面の描画を担当する行。全体で1つだけ存在し、動画や地図を多く開くと膨らむ
- ネットワーク サービス … 通信をまとめて扱う行。これも全体で1つで、通常は上位に来ない
上位に拡張機能が混じっていた場合の手当てははっきりしている。使っていないものを外すか、少なくとも一時的に無効にして、同じ画面をもう一度見る。2回測って差を見る、というやり方が確実で、思い込みを持ち込まずに済む。
サブフレームが並んでいる場合、犯人は「枚数」ではなく「そのページの重さ」になる。埋め込みの多いページを1枚開いているだけで、軽いタブ10枚分に相当することがある。この状況で他のタブを閉じても、体感はほとんど動かない。
GPUプロセスの行が大きい場合は、開いているページの中身が描画を多く使っていることを示している。動画の再生画面、地図、大きな表を絶えず更新する管理画面などが該当する。この行は1つしか存在しないので、原因になっているページを特定するには、CPUの列で上位に来ているタブから順に閉じて、行の数字がどう動くかを見るのが早い。
ネットワーク サービスの行が上位に来ることは通常ない。ここが目立っているなら、同期の処理か、大量の通信を続けているページが動いている可能性がある。この場合もタブの枚数とは無関係なので、枚数を減らす方向に時間を使わないほうがよい。
タブの枚数と消費量が比例しない理由
上位がタブで埋まっていた場合でも、枚数を減らせばその分だけ軽くなる、とは限らない。Chromeの内部の分かれ方が、枚数と一対一になっていないためだ。
同じサイトのタブは、条件が揃えば1つのまとまりとして扱われる。同じサービスのページを8枚開いていても、行が8つ増えるわけではない。逆に、埋め込みの多い1枚のページは、先ほどのサブフレームの分だけ行が増える。枚数を数えるより、一覧の行を数えたほうが実態に近い。
もう1つの理由は、使っていないタブが自動的に休止されることだ。しばらく触っていないタブは中身が破棄され、次に開いたときに読み込み直される。この状態のタブは一覧では小さい数字で並ぶので、閉じても取り返せる量はわずかになる。長時間放置していた大量のタブを一気に閉じたのに軽くならなかった、という体験はここから来ている。
だから、閉じることの効果はメモリよりも別の場所に出る。目的の1枚を探す速度と、タブの題名が読める幅が戻ることだ。それは実際に価値があるが、機械の重さの話とは別の話になる。
比例しない場面をもう1つ挙げると、固定したタブがある。固定したタブは自動の休止から外れる扱いになっているため、何日開いたままでも中身を持ち続ける。よく使うものを固定するのは合理的な運用だが、固定した数が増えると、休止による節約が効かない領域がその分だけ広がることになる。一覧を並べ替えたときに、触っていないはずの行が上位にいるなら、固定されていないかを確かめるとよい。
Chromeの中に犯人がいないときに見る画面
一覧の数字がどれも小さいのにMacが重い場合、原因はChromeの外にある。ここで見るのはアクティビティモニタの「メモリ」タブで、注目するのは合計値ではなくメモリプレッシャーのグラフになる。
メモリプレッシャー: メモリが処理のためにどの程度効率的に使用されているのかを視覚的に表現します。メモリプレッシャーは、空きメモリ容量、スワップ率、確保されているメモリ、ファイルキャッシュメモリによって決まります。 出典: support.apple.com
空きメモリの数字が小さいこと自体は問題ではない、というのがこの説明の要点になる。macOSは空いているメモリをキャッシュに回すので、健全な状態でも空きは少なく見える。判断材料はグラフの色と、同じ画面の下にあるスワップ使用領域の数値だ。スワップが増え続けているなら、Chromeを含む全体が起動ディスクとのやり取りで待たされている。
この状態では、タブを閉じる効果はむしろ大きい。ただし対象はChromeのタブだけとは限らない。他のアプリが原因で圧迫されている場合もあり、そのときはChromeをいくら整理しても戻らない。順番として、まず全体を見て、それからChromeの中を見る形にすると迷わない。
重くなる時間帯で、疑うものが変わる
同じ「重い」でも、いつ起きるかで原因の候補が絞れる。測るタイミングを合わせると、一覧の見え方がまるで違う。
起動した直後だけ重い場合、疑うのは前回のタブの復元だ。前回開いていたページをまとめて開き直す設定になっていると、起動と同時に何十枚分の読み込みが一斉に走る。数分待てば落ち着くのはそのためで、この間にタスク マネージャを開くと、ふだんは見ない行がずらりと並ぶ。設定で復元をやめるか、開き直す対象を絞ると、この山だけは消える。
使い始めて数時間たってから重くなる場合は、積み上がりのほうだ。長く開いている画面が資源を確保したまま離さない状態で、これはタスク マネージャの上位に素直に出る。1日の終わりに測ると、朝と比べてどの行が伸びたのかが分かる。
特定の操作のときだけ待たされる場合、原因は休止からの復帰であることが多い。しばらく触っていなかったタブに戻ると、中身が破棄されているので読み込みからやり直しになる。これは重さではなく待ち時間で、資源の数字はむしろ低い。数字を見て「余裕がある」と判断したのに体感が悪い、というずれはここから生まれる。
測った結果と、対処の対応表
ここまでの3つの画面で分かることと、そのときに効く手当てを並べる。効かない手当てを避けることが、時間を使わないための要点になる。
| 測って分かったこと | 効く手当て | 効かない手当て |
|---|---|---|
| 上位が拡張機能の常駐部分 | 使っていないものを外す | タブを閉じる |
| 上位が埋め込みの多いページ | そのページだけ閉じる | 他のタブを閉じる |
| 上位がタブで、行数も多い | 使わないタブを閉じる、休止の設定を強める | 拡張機能を外す |
| CPUだけが高い | 動画や自動更新のページを止める | メモリを空ける |
| スワップが増え続けている | Chrome以外も含めて減らす | Chromeの設定を見直す |
| どの数字も低いのに遅い | 探す手間の問題として扱う | 機械側の対処すべて |
最後の行が、実は多い。数字はどれも余裕があるのに「重い」と感じる状態で、このときの遅さは機械ではなく、目的のタブに到達するまでの手数から来ている。タブの題名が消えて、40枚のアイコンの上をなぞって探しているなら、原因は資源ではない。
数を減らしても戻るなら、置き場所の問題
測って、外して、閉じて軽くなったとしても、数日で同じ状態に戻ることが多い。戻るのは、増えるタブの大半が「今日の用事」ではなく「毎日使う道具」だからだ。メール、チャット、案件の管理画面、メモ。これらは閉じる対象ではないので、整理のたびに生き残り、その周りに新しいタブが積み上がっていく。
この種類のタブをタブバーから外に出すと、残るのは寿命の短い参照だけになる。Webアプリをまとめるブラウザは、アプリごとに独立したワークスペースを割り当てて、常駐するものを固定の場所に置く。どこまで分かれるのかはできることのページに整理があり、用途ごとの入れ物の作り方はワークスペースで説明されている。どのサービスがそのまま入るかは使えるアプリの一覧で確認でき、同じ発想の製品との違いはFerdiumとの比較にまとめられている。
まずタスク マネージャを開いて、メモリ使用量で並べ替えるところから始めるとよい。上位に拡張機能が並んでいたなら、閉じる作業は今日は不要になる。上位がタブで埋まっていて、しかもその大半が毎日使う道具だったなら、次に変えるのは枚数ではなく置き場所のほうだ。
よくある質問
Chromeのタスク マネージャはどこから開きますか?
右上のその他アイコンから「その他のツール」を開き、その中の「タスク マネージャ」を選びます。開いたら列見出しの「メモリ使用量」をクリックすると、多い順に並べ替わります。CPUの列でも並べ替えて、両方を見比べると原因を絞りやすくなります。
行の数が、開いているタブの枚数と合いません。異常ですか?
異常ではありません。Chromeは同じサイトのタブをまとめて扱うことがあり、逆に埋め込みを含むページは1枚で複数の行を持ちます。拡張機能や描画を担当する行も混ざるため、行数と枚数は一致しないのが普通です。
拡張機能を無効にしても、すぐには軽くなりません。
無効にした直後は、常駐していた部分が終了するまで少し時間がかかる場合があります。同じ画面をもう一度開いて、対象の行が消えているかを確かめてください。消えているのに数字が変わらないなら、原因は別の行にあります。
タブを閉じるより、Chromeを再起動したほうが早いですか?
一時的には有効ですが、戻りも早くなります。再起動で解放されるのは積み上がった状態だけで、常駐している拡張機能や毎日使うページは、起動後に同じだけ戻ります。何が使っていたのかを1度測っておくと、再起動の頻度そのものが減ります。