ガーベージコレクションと言うメモリシステム

皆さん普通にWindowsなどのOSを使っていると思いますが、少し気になった事はありませんか。それは、仮にメモリが8ギガ実装されている中で、順に1ギガごと使用し、その後にひとつとびにアプリケーションを開放したとする。すると、メモリは断片的に1ギガずつ空いているはずなのに、まとめて4ギガのアプリケーションを立ち上げる事ができると言った事です。それにはガーベージコレクションと言うOSのシステム上の考え方が出てきます。

実際に何をしているかと言うと、断片化されたメモリの再構築です。それを行うためにいくらかの負荷がかかるものでして、シビアなゲームなどのシステムでは致命傷になるものです。通常、Windowsのアプリケーションを作成するときに、メモリはハンドル型として定義されるのですが、使用する瞬間のみロックし、そのときの実アドレスを取得すると言った事を行っていますよね。これはその為のシステム上のものなんです。

昔、8ビットと呼ばれるころのパソコンで、BASICで、変数を膨大に定義したときに突如処理が数秒止まるといった現象を覚えておりますか。それもこれが原因です。変数は、認識したときに初めて変数テーブルに追加され、それを最初から検索し、当たったものを読み取ると言った事をしていたのですが、そうなると時間がかかるので、あまりにも後方に定義された変数ばかりを多用していると、BASICが変数の再定義を行うのです。この考え方がガーベージコレクションと言うものです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です