Version: Unity 6.0 (6000.0)
言語 : 日本語
Native memory allocator examples
動的ヒープアロケーター

デュアルスレッドアロケーター

デュアルスレッドアロケーターは、動的ヒープ アロケーターと バケット アロケーターを組み合わせるラッパーです。具体的には、以下を組み合わせます。

  • 2 つの動的ヒープアロケーター: メインスレッドのロックフリーアロケーターと、その他のすべてのスレッドで共有されてアロケーションとアロケーション解除時にロックするアロケーター。バケットアロケーターには大きすぎるアロケーションには、これらのアロケーターが使用されます。動的ヒープアロケーターはメモリブロックを使用します。ブロックの半分以上の大きさのアロケーションには、動的ヒープアロケーターではなく、仮想メモリシステムが適用されます。
  • 小さいアロケーション用のバケットアロケーター。バケットアロケーターが満杯になると、アロケーションが動的ヒープアロケーターに波及します。

2 つの動的ヒープアロケーターのブロックサイズをカスタマイズできます。

共有スレッドブロックサイズのカスタム値を持つメインアロケーター
共有スレッドブロックサイズのカスタム値を持つメインアロケーター

使用状況レポートには、アロケーターの 3 つの部分のすべてに関する情報が含まれます。 例:

[ALLOC_DEFAULT] Dual Thread Allocator
  Peak main deferred allocation count 135
    [ALLOC_BUCKET]
      Large Block size 4.0 MB
      Used Block count 1
      Peak Allocated bytes 3.3 MB
    [ALLOC_DEFAULT_MAIN]
      Peak usage frame count: [16.0 MB-32.0 MB]: 8283 frames, [32.0 MB-64.0 MB]: 1 frames
      Requested Block Size 16.0 MB
      Peak Block count 2
      Peak Allocated memory 53.3 MB
      Peak Large allocation bytes 40.2 MB
    [ALLOC_DEFAULT_THREAD]
      Peak usage frame count: [64.0 MB-128.0 MB]: 8284 frames
      Requested Block Size 16.0 MB
      Peak Block count 2
      Peak Allocated memory 78.3 MB
      Peak Large allocation bytes 47.3 MB

ノート: Peak main deferred allocation count は、削除キュー内のアイテム数です。メインスレッドは、自己によるアロケーションを削除する必要があります。別のスレッドがアロケーションを削除すると、そのアロケーションはキューに追加されます。アロケーションは、メインスレッドが削除するまでキュー内で待機します。その後、ディファードアロケーションとしてカウントされます。

Native memory allocator examples
動的ヒープアロケーター