そのような人にとって、前回記事に引き続いてUnityのメモリ管理で何を学ぶべきか、短いページ数でまとめてくれているUnity Gemsサイトの情報は有難いとおもう。
前回の紹介に引き続いて「メモリ管理」について翻訳を紹介したい。
http://unitygems.com/memorymanagement/
October 21, 2012
メモリゾーン
プログラムを起動したとき、オペレーションシステムはメモリの一部をプログラムに割り当てる。過去は、それにゾーンが4つあり、コールスタック、ヒープ、レジスタ、とスタティックメモリだ。C#言語の開発者によりゾーンはさらに2つに絞り込むことが出来ため、現在はスタック、ヒープのみだ。前者は順序があり、高速ですが、制約がある。後者はランダムの順序で、大きく低速だ。
各変数についてどちらを使用するか変数の目的とその結末によって選択できる。
storageクラスのキーワードは3つ(C言語ではregisterを含めた4つめがありました)あり、auto、static(今後説明していく)、およびexternだ。externは出くわすかもしれないキーワードだ。これは単に自らのプロジェクトの外で変数を宣言する、という意味であり、例えば、全く別の非.NET言語で書かれたプラグインDLLの変数だったりする。
C言語のプログラマならば、externの意味がC#のそれとは異なることに留意すべきだ。C#ではexternはManaged Memoryに割り当てされてない変数を指す。
extern int number;コンパイラはnumberにメモリを割り当てせず、変数が別のどこかで見つかることを期待する。この内容を深堀りするのはここまでとする。さらに詳細は、このリンクにて、より多くの情報を確認出来る。
-------------
まずはキーワードから一つづつ丁寧に。Unity学習のなかにメモリ管理もトピックとしてお忘れなく!
0 件のコメント:
コメントを投稿