Android上のアプリケーションはJava言語で開発できるが、PCやサーバー向けのJava仮想マシンとは異なる「Dalvik仮想マシン」上で動作する。Dalvik仮想マシンは、モバイル向けに特化されているのが特徴である。 Androidアプリケーションの開発では、Javaの開発現場で培ってきた資産やノウハウを生かすことができる。だが、基本的にPC上で動作させるJavaアプリケーションと同様に考えてしまうと、思わぬ落とし穴に陥ることになる。 そこで、主にメモリー管理の面からJava仮想マシンとDalvik仮想マシンの違いを見ていくことにする。 両者とも、メモリー管理はガベージコレクタ(GC)が担当する。ヒープ領域に空きがない場合、不必要なオブジェクトを回収して空き領域を作るのがGCの役割である。Java仮想マシンでは「世代別GC」という方式を採用しているが、Dalvik仮想マシンは「マーク