ノート: このセクションのアロケーターに関する情報は、ネイティブメモリのみ に適用され、マネージヒープには 適用されません。これについては、マネージメモリ のセクションで説明します。このセクションでは、ネイティブメモリ管理とアロケーターについて一般的な知識があることを前提としています。
アプリケーションはメモリアロケーターを使用して、パフォーマンスと使用可能なメモリスペースのバランスを取ります。アプリケーションに多くの予備メモリがある場合は、シーンやフレームをロードするときに、高速でメモリー負荷の高いアロケーターを使用できます。ただし、アプリケーションのメモリが限られている場合は、低速のアロケーターを使用してでも、メモリを効率的に使用する必要があります。さまざまなプロジェクトで最高のパフォーマンスが得られるように、Unity のアロケーターを各アプリケーションのサイズと要件に合わせてカスタマイズできます。
Unity には 5 つのアロケーターのタイプがあります。各タイプはメモリブロックに割り当てるためのアルゴリズムが異なり、さまざまな割り当てに役立てられます。通常、各割り当ての重要な違いは永続性、つまり割り当ての寿命です。これによって割り当てにどのアロケーターを使用するかが決まります。例えば、長期 (永続化された) 割り当てにはヒープアロケーターとバケットアロケーターを使用し、短期割り当てにはスレッドセーフリニアアロケーターと TLS アロケーターを使用します。
次の表は、各アロケータータイプのアルゴリズムと使用方法を示しています。
| アロケーターのタイプ | アルゴリズム | 用途 |
|---|---|---|
| 動的ヒープ | Two Level Segregated Fit (TLSF) | • メインアロケーター • Gfx アロケーター • Typetree アロケーター • ファイルキャッシュアロケーター • プロファイラーアロケーター • エディタープロファイラーアロケーター (エディターのみ) |
| バケット | 固定サイズのロックフリーアロケーター | 以下に対する小さな割り当ての共有アロケーターとして使用: • メインアロケーター • Gfx アロケーター • Typetree アロケーター • ファイルキャッシュアロケーター |
| デュアルスレッド | サイズとスレッドIDに基づいて割り当てをリダイレクト | • メインアロケーター • Gfx アロケーター • Typetree アロケーター • ファイルキャッシュアロケーター |
| スレッドローカルストレージ (TLS) スタック | LIFO スタック | 時割り当て |
| スレッドセーフリニア | ラウンドロビン FIFO | ジョブにデータを渡すためのバッファ |
ノート: このドキュメントの例では、
-log-memory-performance-statsコマンドライン引数を使用した場合に、プレイヤーまたはエディターを閉じるときにログに記録されるメモリ使用状況レポートを使用しています。ログファイルを見つけるには、ログファイルページ の指示に従ってください。