2012年12月15日土曜日

Unityメモリ管理「メモリゾーン」

Unityはゲーム開発の敷居を下げてくれるがゆえにC#について.NETで学ぶ機会がなかった人も多くインディーズゲーム開発に関わるようになっていると感じる。

そのような人にとって、前回記事に引き続いて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 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ