Linux テーミナルのメモリ使用量

2026/05/12 4:49

Linux テーミナルのメモリ使用量

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

本テキストは、主にユーザーが端末エミュレータを慎重に選択することで深刻なメモリ問題を回避しなければならないことを論じており、Wayland環境において

foot
がトップクラスの選択肢として浮上しています。著者は以前、AlacrittyからKittyへ切り替えた後、Kittyが過剰なスワップ領域を使用するのを発見し、これが低メモリのマシンにとって致命的な問題であることに気付きました。これは、RAMが16GBしかないマシンでKittyの10個の実行例が50GBのスワップを消費したことで確認されました。厳密なテストにより、軽量端末
st
は最も低いメモリ性能を提供する(USSの増加量は2,592から3,396)ことが確認されましたが、スクロールバック機能がないため実用性に欠けます。一方、
foot
はWayland環境下で機能を効率よくバランスさせており、
konsole
などの代替案よりも著しく少ないメモリを消費します。この記事ではまた、X11ネイティブの端末が互換性レイヤーを通じて現代的なWaylandシステム上で動作し得るが、その逆は不可能であると指摘しています。驚くべきことに、X11設定内で特に
gnome-terminal
st
よりも効率的であることが示されました。最終的に、この分析はユーザーが制御不能なメモリの成長を避けるため、環境固有のツールを採用することを推奨しており、具体的にはX11向けには
lxterminal
、Wayland向けには
foot
です。これにより、システムが応答性を保ちつつピクセルパーフェクトレンダリング機能(Wayland下での
timg
ツールのサポートを含む)を維持し、開発者ワークフローにおけるリソース使用の最適化という業界ニーズに対応できます。

本文

私はターミナルを頻繁に使用しています。多くのマシンでは、1〜4 つのデスクトップ上で 5〜10 個ほどのターミナルを開けておくのが常ですが(私が現在執筆中のマシンでは、2 つのデスクトップで計 12 個のターミナルが開いています)。1996 年に Linux を利用し始めた当初、基準となる xterm を用いていました。その後は 1998 年頃、rxvt を発見し、数年来使用该终端了。その後どうなったのか記憶にないのですが、約 3 年前には主に lxterminal を使用していたところ、X11 と Wayland の両方で動作し、多くの点で優れた機能を備えていた alacritty に切り替えました(現在はこれらの二つの環境の間で揺れています)。しかし、それから少し前に Kitty を発見し、alacritty が満たしていた要件もすべて満たす上、ターミナル内でピクセル単位での画像表示(timg により – https://github.com/hzeller/timg)を可能にすることが非常に魅力的であり、特にリモートの Web サーバーへの SSH 接続時などは極めて便利です。その結果、ほとんどのマシンで Kitty を導入しました。

約 6 ヶ月前、あるマシンのスワップ領域がパンクし、動作が極度に遅いことに気づきました。これは i7 プロセッサを搭載しつつも HDD を使用している比較的古いマシンですが、16GB のメモリを備えており、ビデオ編集や大規模データベースの運用などメモリ集約的な処理は行っていませんでした。この経験から学習の機会を得た結果、smem(https://www.selenic.com/smem/… Fedora および Debian のリポジトリでも入手可能)を利用しました。これにより、プロセスのメモリ使用量(USS、PSS、RSS、スワップ)を報告できます。ここで即座に判明したのは、10 つの Kitty インスタンスが全てのスワップ領域を消耗しており、その量が 50GB に達していたことです(なぜこのように多量のスワップ領域を設定したのかは不明ですが、おそらく失敗または忘れ去られた実験の跡でしょう)。全ての Kitty インスタンスを終了させ、代わりに 10 つの xterm を起動すると、以前に使用されていた 50GB のスワップ領域が完全に解放されました。

xterm は特別に美しくありませんが、タブやメニューといった他者が重要だと感じる機能は利用しておりません。透明度も少し残念ですが、大きな問題ではありません。timg による画像表示という希少なユースケースのため、Kitty は引き続き保留しています。その後、大半のマシンを alacritty に戻すことにし、長期的にどのようなターミナルを採用すべきか考え始めたところ、すべての候補ターミナルを同時に実行するテストを実行することにしました。さらに望ましいのは、それぞれの環境(Wayland と X11)で各ターミナルを並走させることです。そして、全てのターミナルに対して同一の指令セットを実行し、メモリ使用量を計測します。

Openbox / X11

指令実行前

PIDコマンドスワップUSSPSSRSS
115733st02592300812788
115892xterm06808741417732
115207lxterminal06528989141380
114856/usr/libexec/gnome-terminal0102521498452836
115034/usr/bin/kitten atexit0197721978321168
114615alacritty0342244347898396
131279konsole03510850308101220
115005kitty05637666584129180
115381ptyxis05476067603144640

指令実行後

PIDコマンドスワップUSSPSSRSS
115733st03396383413780
115207lxterminal078001115942656
115892xterm0116401226622748
114856/usr/libexec/gnome-terminal0106921541653340
115034/usr/bin/kitten atexit0219722198323368
114615alacritty04018849444104408
131279konsole03852854193106256
115005kitty07071680917143568
115381ptyxis05825271107148316

KDE / Wayland

指令実行前

PIDコマンドスワップUSSPSSRSS
30975st02924337412832
31112xterm06460669113204
7905foot05096711017296
30850rxvt08936944019248
29538lxterminal092001462247240
29259/usr/libexec/gnome-terminal0121681900553420
29417/usr/bin/kitten atexit0228522286424464
29098alacritty0254682883773416
43371/usr/bin/konsole02734839068130252
29401kitty04646851520105816
29690ptyxis07322079204141012

指令実行後

PIDコマンドスワップUSSPSSRSS
30975st03204382013836
31112xterm098881011916632
7905foot087641111421704
30850rxvt0128721373627096
29538lxterminal098241534348804
29259/usr/libexec/gnome-terminal0126601931354056
29417/usr/bin/kitten atexit0228842289624496
29098alacritty0341883747082580
43371/usr/bin/konsole03324448094145496
29401kitty05304858032112936
29690ptyxis07506081130143284

いくつかの例外的な結果に気づかれるかもしれません:一つのマシンでは rxvt の測定を行っていません。また、比較対象としてのコントロールも概して不十分であり、ターミナルのサイズやスクロールバッファの設定など varied な条件が揃っていません。しかし、上記の結果から最小値と最大値の間のメモリ使用量の差が 10 倍を超えることが明白であるため、ここで測定しているのは微妙な差異ではなく、そのためそれほど問題視していません。

得られた結果は実に興味深く示されています:

  • xterm よりもメモリ使用量が少ないターミナルが存在すると予想していませんでしたが、st がその点で顕著に優れています。
  • Kitty が最もメモリを多用するターミナルになると予想していましたが、副的なアプリとして kitten のメモリ使用量を考慮に入れると、おそらくそれでもなお「勝利」している可能性があります。
  • gnome-terminal のメモリ使用量は konsole(KDE 標準のターミナル)と同程度になることを想定していましたが、本試験において際立って良好なパフォーマンスを示しました。
  • 環境の違い(Fedora と Debian、Wayland と X11)は、測定結果にほとんど影響を与えていませんでした。
  • konsole が timg によるピクセル単位の画像表示をサポートしていることに驚きました。timg は元々 Kitty に乗り換えた理由であり、ピクセル単位で timg をサポートするターミナルのリストは限られています。私が知覚している他の候補としては、foot(Wayland 環境でのみ動作するため X11 では未確認)と ghostty(Debian リポジトリ内のターミナルに限定するため未テスト)があります。foot もまた、合理的なメモリ使用量と timg サポートを両立できることを示しており、これは有益な知見です。

私は今後 st をさらに試してみようと考えています。マシンがメモリ制約下にあるわけではないものの、他の要件も満たすのであれば、最もメモリ効率のよいターミナルを採用しない理由はありません。普段 10 つものターミナルを動作させる場合、その影響は累積するためです。st が私の環境では適切でなければ、gnome-terminal に切り替えることにします。

追記

  • 2026-05-08: st はスクロールバッファを全く持っていないことが判明しました。現在は X11 環境では lxterminal、Wayland 環境では foot を採用する方向に進んでいます。

なお、X11 に最適化してコンパイルされたターミナルは Wayland 環境でも問題なく動作します(X11 互換レイヤーが存在するためです)。逆にそのような仕組みがないため、Wayland ネイティブのターミナル(例えば foot)は X11 環境では動作しません。

同じ日のほかのニュース

一覧に戻る →

2026/05/12 6:08

TanStack の NPM パッケージが乗っ取られました。

## Japanese Translation: GitHub は、ヘルスケア、金融サービス、製造業、政府などの業界にまたがり、エンタープライズから小規模・中規模チーム、スタートアップ、非営利団体に至るまであらゆる組織を対象とした、包括的で AI 搭載の開発プラットフォームへと進化しました。その核心となる価値は、Copilot、Spark、Models など高度な AI コード作成ツールと堅牢なセキュリティ機能を統合し、開発ライフサイクル全体を支援することにあります。主要なワークフローは GitHub Actions、Codespaces、Issues、Code Review によって可能にされ、アプリケーションのセキュリティは Advanced Security、Code Security、Secret Protection によって強化されています。アプリのモダン化、DevOps、CI/CD、DevSecOps などのユースケースに対応するソリューションが提供されています。エンタープライズ顧客には、GitHub Advanced Security、Copilot for Business、Premium Support を含む AI 搭載プラットフォームとアディオンが追加で提供されます。技術的な機能だけでなく、広範なドキュメント、コミュニティフォーラム、カスタマーサポート、Trust Center、オープンソースプログラム(Sponsors、Security Lab、Accelerator、Archive Program)を通じて協力的なエコシステムを育んでいます。この多用途でオールインワン環境は、複雑な開発プロセスの簡素化、継続的統合・デリバリーパイプラインの加速化、業界や組織規模を問わずユーザーへのソフトウェアセキュリティと生産性の向上を実現します。

2026/05/12 5:51

GitLab は、組織の人員削減と「CREDIT(クレジット)」バリューの終了を発表しました。

## Japanese Translation: GitLab は「エージェント時代」を主導するため、根本的な再編に着手しており、これは AI エージェントがほとんどの技術的ワークフローを管理し、人間は高レベルの戦略的判断に専念する転換を意味します。本年 6 月上旬までに完了させるこのシフトには、大幅な人員削減、特定の機能において最大 3 階分の管理レイヤーを撤廃する組織のフラット化、そして R&D を約 60 の小規模かつ権限を持たせたチームに再編し、エンドツーエンドの所有責任を与え直すことが含まれます。移行をサポートするためには、内部プロセスに AI エージェントを組み込み、レビュー、承認、ハンドオフを自動化し、会社の役割を最適化するとともに、自社の存在が縮小している市場においてパートナーネットワークを活用して小規模チームを支援する可能性があります(小規模なチームを持つ国では最大 30% の削減)。 同時に、GitLab は従来のサブスクリプションモデルに加え、AI エージェントタスク向けにコンシュームベースの価格設定を組み合わせたビジネスモデルに進化させ、運用オーバーヘッドの削減と、予測可能な収益と柔軟な使用量指標とのバランス実現を目指します。ユーザーにとっては、これらの変更によって摩擦が減った開発環境が提供され、より迅速なイノベーションを促し、完全に自律的かつ AI 駆動の開発サイクルへの移行を加速させます。また、GitLab は以前の価値観の枠組みを廃止し、「スピードと品質」「顧客所有」「直接的な顧客成果」に焦点を当てた 3 つの新規運営原則に移行します。 GitLab は本日、第 1 四半期および FY27(2026 fiscal year)の通年ガイダンスを維持することを再確認しました。詳細なスコープと財務影響については、取締役会承認後に 6 月 2 日の earnings call で共有される予定であり、同時に、許可された地域において 5 月 18 日までに申請が必要となるチームメンバー向けの任意での退職枠を提供しています。最終的に、この戦略的動きは GitLab を、手動のソフトウェアプロセスから完全に自律的で AI 駆動の開発サイクルへの移行における業界リーダーとしての地位を確立するものです。

2026/05/12 4:33

Java のレコードをネイティブメモリに高速でマップするためのライブラリ

## Japanese Translation: TypedMemory は、Foreign Function & Memory (FFM) API に基づいて構築された、実験的で高パフォーマンスの Java ライブラリであり、強力に型付けされた非ヒープメモリへのアクセスを簡素化します。本ライブラリは ClassFile API を使用しているため、Java 25 以降の使用を対象としており、ネイティブアクセスを有効にするために特定の JVM フラグ(例:`--enable-native-access`)の設定が必要です。本ライブラリでは `Mem.of()` を用いて Java レコードを物理メモリに直接マッピングし、`get`、`set`、`fill`、`copyTo`、`swap` などの操作をサポートします。また、型付けされたメモリアロケーション、レコードレイアウトの導出、メモリエイアウトに関する内省、既存のセグメントへのラッパー機能、アノテーションによる固定サイズ配列表場などの機能を備えています。 本 API はグラフィックパイプライン、シミュレーションシステム、ネイティブ連携層、バイナリプロトコルにおけるコードを大幅に削減しますが、以下の制限点にはユーザーが留意する必要があります:レコード内部は変長データのためにヒープアロケートされた配列に依存しており、ゼロコピー動作を必要とする厳密な非ヒープシナリオではパフォーマンスに影響を与える可能性があります。また、ユニオン型はまだサポートされていません。コア API は現在 Apache License 2.0 に基づいて実験的であり、新機能(単純な長整数アドレスを超えたポインタ型フィールドなど)の追加に伴い設計が変化し、互換性を損なう変更が生じる可能性があります。本ライブラリは Maven Central で `io.github.mambastudio:typedmemory:v0.1.0` として入手可能です。