# 動的ヒープアロケーター

> Inspect the usage reports of the dynamic heap allocator.

動的ヒープアロケーターは、メインのヒープアロケーターで、メモリのブロックにアルゴリズム Two Level Segregated Fit (TLSF) を適用します。

それぞれのプラットフォームにはデフォルトのブロックサイズがあり、このサイズは[カスタマイズすることが可能](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/memory-allocator-customization.md)です。この割り当ては、ブロックの 1/2 よりも少なくする必要があります。ブロックの半分以上の割り当ては動的ヒープアロケーターには大きすぎるため、Unity は代わりに仮想メモリ API を使用して割り当てを行います。

動的ヒープアロケーターの使用状況レポートの例:

```
[ALLOC_DEFAULT_MAIN]
Peak usage frame count: [16.0 MB-32.0 MB]: 497 frames, [32.0 MB-64.0 MB]: 1 frames
Requested Block Size 16.0 MB
Peak Block count 2
Peak Allocated memory 54.2 MB
Peak Large allocation bytes 40.2 MB
```

この例では、TLSF ブロック サイズは 16 MB に設定され、Unity は 2 つのブロックを割り当てています。アロケーターのピーク使用量は 54.2 MB でした。52.4MB のうち、40.2MB は TLSF ブロックで割り当てられず、代わりに仮想メモリにフォールバックしました。ほとんどのフレームには、16-32 MB のメモリが割り当てられており、1 つのフレーム (おそらくローディングフレーム) が 32-64 MB のメモリでピークに達しました。

ブロックサイズを増やすと、大きな割り当ては仮想メモリにフォールバックせず、動的ヒープに留まります。ただし、そのブロックサイズでは、ブロックが完全に使用されない可能性があるため、メモリの浪費につながる可能性があります。

> **ヒント**: タイプツリーとファイルキャッシュアロケーターは、動的ヒープ割り当てを使用します。このアルゴリズムで使用するメモリブロックを節約したい場合は、タイプツリーのブロックサイズとファイルキャッシュのブロックサイズを 0 に設定します。タイプツリーとキャッシュを使用する割り当ては、代わりにメインのアロケーターにフォールバックします。これはネイティブメモリの断片化が増加するリスクを伴うことに**注意**してください。これらのブロックサイズの設定方法については、[アロケーターのカスタマイズ](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/memory-allocator-customization.md)を参照してください。
