ドキュメント

Unity Engine

Unity Engine

ネイティブメモリ

Understand how Unity controls memory in its native C++ layer.
読み終わるまでの所要時間 5 分最終更新 1ヶ月前

ノート: このセクションのアロケーターに関する情報は、ネイティブメモリのみ に適用され、マネージヒープには 適用されません。これについては、マネージメモリ のセクションで説明します。このセクションでは、ネイティブメモリ管理とアロケーターについて一般的な知識があることを前提としています。
アプリケーションはメモリアロケーターを使用して、パフォーマンスと使用可能なメモリスペースのバランスを取ります。アプリケーションに多くの予備メモリがある場合は、シーンやフレームをロードするときに、高速でメモリー負荷の高いアロケーターを使用できます。ただし、アプリケーションのメモリが限られている場合は、低速のアロケーターを使用してでも、メモリを効率的に使用する必要があります。さまざまなプロジェクトで最高のパフォーマンスが得られるように、Unity のアロケーターを各アプリケーションのサイズと要件に合わせてカスタマイズできます。
Unity には 5 つのアロケーターのタイプがあります。各タイプはメモリブロックに割り当てるためのアルゴリズムが異なり、さまざまな割り当てに役立てられます。通常、各割り当ての重要な違いは永続性、つまり割り当ての寿命です。これによって割り当てにどのアロケーターを使用するかが決まります。例えば、長期 (永続化された) 割り当てにはヒープアロケーターとバケットアロケーターを使用し、短期割り当てにはスレッドセーフリニアアロケーターと TLS アロケーターを使用します。
次の表は、各アロケータータイプのアルゴリズムと使用方法を示しています。

アロケーターのタイプ

アルゴリズム

用途

動的ヒープTwo Level Segregated Fit (TLSF)• メインアロケーター
• Gfx アロケーター
• Typetree アロケーター
• ファイルキャッシュアロケーター
• プロファイラーアロケーター
• エディタープロファイラーアロケーター (エディターのみ)
バケット固定サイズのロックフリーアロケーター以下に対する小さな割り当ての共有アロケーターとして使用:

• メインアロケーター
• Gfx アロケーター
• Typetree アロケーター
• ファイルキャッシュアロケーター
デュアルスレッドサイズとスレッドIDに基づいて割り当てをリダイレクト• メインアロケーター
• Gfx アロケーター
• Typetree アロケーター
• ファイルキャッシュアロケーター
スレッドローカルストレージ (TLS) スタックLIFO スタック時割り当て
スレッドセーフリニアラウンドロビン FIFOジョブにデータを渡すためのバッファ
ノート: このドキュメントの例では、
-log-memory-performance-stats
コマンドライン引数を使用した場合に、プレイヤーまたはエディターを閉じるときにログに記録されるメモリ使用状況レポートを使用しています。ログファイルを見つけるには、ログファイルページ の指示に従ってください。