LoginSignup
0
0

max-semi-space-sizeについて調べてみた

Last updated at Posted at 2024-05-04

背景

--max-old-space-sizeについて調べていた所、間違えて--max-semi-space-sizeを調べた為です。

max-semi-space-sizeとは

--max-semi-space-size=SIZE (in megabytes)

V8のscavengeガベージ・コレクタの最大半空間サイズを MB(メガバイト)で設定するオプションです。
これによって多くのメモリを消費する代償として、Node.jsのスループットが向上する可能性があります。

〜V8〜
Node.jsを動かすエンジンです。
JavaScriptはV8によって内部的にJIT(ジャスト・イン・タイム)コンパイルされ、実行速度を高めています。
引用

〜ガーベッジコレクション〜
コンピュータプログラムの実行環境などが備える機能の一つで、実行中のプログラムが占有していたメモリ領域のうち不要になったものを自動的に解放し、空き領域として再利用できるようにするもの
引用

〜スループット〜
単位時間あたりに処理できるデータ量
引用

〜半空間(semi-space)〜
ガベージ・コレクションのコピーのためにメモリ領域が2つの部分に分割される場合、その部分は半空間、または単に空間として知られていいます。

各半空間はメモリの連続した領域である。半空間は通常2つのスペース・コレクションに使用されるが、世代別コレクションに使用することもできます。

ガベージ・コレクションの開始時にオブジェクトが存在する半空間はfromspaceと呼ばれ、tospaceはガベージ・コレクションが完了したときにオブジェクトが存在し、新しいオブジェクトが割り当てられる場所です。
引用

〜メモリ〜
メモリとは、プロセッサが直接アクセスできる(メモリ・アドレッシング命令を使用する)メモリを指します。

これは実メモリである場合もあれば、仮想メモリである場合もあります。
引用

〜実メモリ〜
メモリまたはストレージ(またはストア)とは、データや命令が保存される場所である。例えば、キャッシュ、メインメモリ、フロッピーディスク、ハードディスクはすべて記憶装置です。
これらの用語は、データを保存するシステムの容量にも使用され、コンピュータに接続されているすべての記憶装置の合計に適用されることもあります。
引用

V8ヒープの若い世代のサイズは半空間のサイズの3倍です。

「V8ヒープの若い世代のサイズは半空間のサイズの3倍」だというのはコードで以下のように書かれています。

  static constexpr size_t kNewLargeObjectSpaceToSemiSpaceRatio = 1;

引用

size_t Heap::YoungGenerationSizeFromSemiSpaceSize(size_t semi_space_size) {
  return semi_space_size * (2 + kNewLargeObjectSpaceToSemiSpaceRatio);
}

引用

つまり半空間への1MiBの増加は3つの個々の半空間それぞれに適用され、ヒープサイズが3MiB増加します。

--max-semi-space-sizeのデフォルト値

64ビットシステム:16MiB
32ビットシステム:8MiB
だそうです。

MiB(Mebibyte)をMBに換算する方法

1MiB=2の20乗B
1MB=100万B

1MiB=1.049MB
引用

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0