Unityのメモリ管理については、知っているつもりで知らない、ということがかなり多い。
筆者自身、このことについては疎いが、Unity Answersの常連が集まってUnityの知識をUnity Gemsというサイトに集約させようとい動きをしている熱心な方がいて、様々な記事を乗せている中にメモリ管理についても触れているため、そのUnity Gemsと呼ばれるサイトの管理者に事前に許諾を得たうえで、今回内容の翻訳を紹介をしたい。
なお、記事内容も多岐に渡っているため、かなりの回数に渡るブログ投稿となる点は事前に了解いただきたい。
http://unitygems.com/memorymanagement/
October 21, 2012
ゲーム実行中にコンピュータあるいはデバイスのメモリ上で何が起きているのか、疑問に思ったことがある人は、この記事により、ゲームを上手に作成したりクラスや関数のメモリ使用を最適化するための技術的情報が得られると確信している。
- メモリのゾーン
- 値型とスタック
- 参照型とヒープ
- 構造体とクラスの比較
- 参照を作成する
- Staticクラス
- Static変数
- Static関数
- ヒープのフラグメンテーション、オブジェクトプール、およびガーベージコレクション
Unityプログラミング、あるいは一般にプロミングを始めたばかりの場合、変数の型の目的を見誤ることがある。例えば、なぜいくつかの変数が更新された、なぜ残りは更新されなかったか、なぜまだ必要だったのに変数がなくなったのか、といった場合である。
初心者にありがちな問題はStatic変数の使用である。インターネットの様々なチュートリアルでで出会うけれども、作者の方がはっきりと書く手間を惜しんで結局「変数に簡単に参照する方法」にとどまりがちである。
問題は、Static変数(さらにはクラス変数)は簡単なトピックでないことである。
教える人によっては、単に使用するのを避けなさい、とだけ言って、Staticで出来ることは他の型でも出来ると教えてたりする。これから見ていくことはそれは仮に出来ないことはなくともベストの解決策ではないということである。
これから内容に深入りする前に、もしC言語の経験があってオブジェクト指向プログラミングの経験がないのであれば、メモリ管理について知っていることやstorageキーワードはオブジェクト指向プログラミングと似ても似つかないことを知るべきである。C#言語をC言語になぞらえることは避けるべきである。
このチュートリアルでは、異なるメモリのゾーン、値の種類、参照の種類、動的メモリ割り当てとStatic変数についてカバーする。
--------
次回より9つの記事を各々分けて紹介していく、ので長丁場ですがお付き合いください!
0 件のコメント:
コメントを投稿