低レベルのネイティブプラグイン用 Memory Manager API
Access Unity's memory manager and track memory usage from native plug-ins.
読み終わるまでの所要時間 7 分最終更新 1ヶ月前
IUnityMemoryManagerこの API を使用すると、以下が行えます。
- メモリアロケーターを通して Unity のメモリマネージャーにアクセスできます。
- Unity の Memory Profiler パッケージを使用して、プラグインのメモリ使用状況を追跡できます。
これらの機能によって、プラグインのメモリ割り当ての管理とプロファイリングが (C++ でこれと同等のメモリ管理メソッドを使用するよりも) 簡単に行えます。
プラグイン API は、 ヘッダーで宣言される、IUnityMemoryManager インターフェースによって提供されます。API の完全なリファレンスは、このファイルにあります。ヘッダーファイルを見つけるには、以下を行います。
IUnityMemoryManager.h- Windows の場合は、インストールされた Unity の フォルダー内にこのヘッダーが保存されます。
<UnityInstallPath>\Editor\Data\PluginAPI - macOS の場合は、Unity アプリケーションを右クリックし、Show Package Contents を選択してください。ヘッダーは にあります。
Contents\PluginAPI
この API を効果的に使用するためには、以下の概念に関する理解が必要です。
Unity でのメモリ使用状況の追跡
プラグインのメモリ使用量を追跡するには、Memory Profiler パッケージ を使用してスナップショットを作成し、All Of Memory タブ でそのスナップショットを開きます。 を使用してメモリを割り当てると、Memory Profiler に、プラグインのメモリ割り当てが (各アロケーターの作成時にアサインした領域とオブジェクトの名前の下に) 表示されます。
IUnityMemoryManager以下のスクリーンショットでは、Memory Profiler パッケージウィンドウに、 API でメモリを割り当てられたネイティブプラグインの、メモリ使用量が表示されています。この例では、areaName パラメーターを "MyNativePlugin"、objectName パラメーターを "MyPluginAllocator" として CreateAllocator メソッドが呼び出されています。詳細については、CreateAllocator を参照してください。
IUnityMemoryManager
Memory Profiler パッケージウィンドウに、Plugin Backend Allocator というユーザー定義のアロケーターのメモリ使用量が表示されています。
詳細については、スナップショット を参照してください。
メモリ管理の制限
この API を使用すると、ネイティブプラグインの開発時に Unity のメモリ管理システムが使用できるようになります。これには上述のとおり大きな利点がありますが、制限がないわけではありません。Unity のメモリ管理システムには以下の特徴があります。
- 自動では管理を行いません。メモリの割り当てと解除は自分で行う必要があります。
- ガベージコレクターによって追跡されず、クリーンアップされません。
ネイティブ C++ のメモリは管理されないため、アプリケーションに必要なメモリを全て把握しておく必要があります。これには、割り当てるメモリの量を適切に選択することや、不要になったメモリの割り当てを確実に解除することが含まれます。
IUnityMemoryManager追加リソース
- ネイティブプラグインインターフェース - この API の継承元のベースインターフェースに関する説明です。
- ネイティブプラグイン - ネイティブプラグインとは何かの説明です。
- メモリアロケーターのカスタマイズ - Unity の内部的なメモリアロケーターのカスタマイズ方法を説明しています。