2010年7月23日金曜日

JVM内の仮想プロセス

JVMは1つのプロセスとしてOS上で実行される。
プロセスはメモリが独立しており、共有しない並行実行の単位だ。よって、ソフトウェアから見るとプロセスもPCも大差なく、いずれも分散環境を構成している。
しかし、Javaで分散システムのモデルを作成するとスレッドで表現することになり、共有してはいけないにもかかわらずデータを共有してしまう。それによって実際にはありえないバグが混入することがある。
そこで、JVMにもメモリを共有しないプロセスを導入してはどうだろう。実際のプロセスはOSに強く依存するので仮想プロセスが良いと思う。仮想プロセスが使えるとソフトウェアの信頼性を高めることができる。例えば、スレッドで構築しているFirefoxはよく落ちるが、プロセスで構築されたChromeはなかなか落ちない。原因はそれだけではないだろうが、そのような傾向はある。
一見、無駄なことをしているようだが、手軽にできる手法としては有効なものだろう。

0 件のコメント: