Javaはコンパイラでコンパイル後、機械語ではなくJVMが理解できるコードに変換されると理解しています。
すると、実行後はクラスファイルを一度メモリに展開するのにJVMを挟む必要があるから、これがオーバーヘッドになると思っています。
一方、CやC++はコンパイル後のファイルは直接機会が理解できるため、JVMみたいなのによるオーバーヘッドが生じないと理解しています。
実際、JavaとC言語の速度の差はこのJVMによるものなのでしょうか?
「実行後はクラスファイルを一度メモリに展開するのにJVMを挟む必要があるから、これがオーバーヘッドになる」とは、どういう意味でしょう? あなたはJVMがJavaの中間コードを機械語に変換してから実行していると思っているんですか?
はい、そう思って言いましたが、なにがどのように違うのでしょうか?できれば教えて頂きたいです。
僕は、JVMが中間コードをマシン語に変換して、それをメモリにキャッシュすると思っています。
よって、JVMが中間コードを機械語に変換してメモリに展開してから、それを各々のOSでプロセスが実行していると考えています。
誤った考え方であれば、ぜひ無知の僕に正しい仕組みをご教授お願いします。
かなりの入門者なもんで誤った質問をしてしまいました。
教えて頂き次第、貴方のだした、質問修正依頼を果たしたいと思います。
回答2件
あなたの回答
tips
プレビュー