投稿者 tel | 2017年4月30日

WWW.bytesにアクセするたびにメモリが確保される

UnityのWWWクラスでダウンロードした後にtextやbytesにアクセスするとそのたびにメモリが確保されているみたい。

以下のようなテストコードを用意する。

WWW www = new WWW(url);

while (!www.isDone)
{
    yield return null;
}

Profiler.BeginSample("///// www.bytes");

// 適当な回数だけbytesにアクセスする
int size = 0;
for (int i = 0; i < n; i++)
{
    size = www.bytes.Length;
}

Profiler.EndSample();

1回だけアクセスのときGC Allocは68.5KB

100回アクセスしたときGC Allocは6.7MB

まとめ

WWWクラスのbytesやtextにアクセスするときは1度だけにすること。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。