デイリーQ:あなたは、Java仮想マシンのアーキテクチャそれを知っていますか?

C / C ++プログラマーの小さなパートナーを開発するために、彼らは常に、それぞれを必要とするので、それは、メモリ管理の分野での頭痛であるnewペアリング操作の書き込みにdelete/freeコードを。私たちだけでなく、AndroidのJavaプログラマのために、常に仮想マシンでの自動メモリ管理のため、およびメモリ管理の重要性を無視します。

簡単ないくつかの純粋なAndroidのフロントた後、私はあなたに、通常はあなたが興味のある、あまりにも多くのものを持っていないことがほとんどないドーピングを与えたいです。私がこれを書いたとき、ほとんどのAndroid開発者のために、彼らは代わりに私が今日のJava仮想マシン・アーキテクチャをお話します、実質的なスキルのアップグレードにもっと注意を払うだろうので、実際には、非常に、もつれました。

しかし、イデオロギー闘争の一連の後、私は最後にこれを言うつもりだった、時間のあまりを無駄にしないために、私はまだ続く心の中でシリーズを「毎日尋ねた」、我々はできるだけ多くのテキストを合理化している、すべての知識が少しいるので5分以内にすべての時間の制御点をお読みください。

高周波テストサイトとして、Java仮想マシンのアーキテクチャのインタビューでは、あなたは面接の知識を確認することができますよう、ので、おそらくあなたの学習の考え方が良くなります。

私はまだ私が唯一の組み合わせは、それらを理解する方が簡単だった説明するために、この画像を使用することになり、このチャートを脱いでオンラインにする必要があります。

メソッドエリア、仮想マシン・スタック、ネイティブメソッドスタック、スタック、プログラムカウンタ:Java仮想マシンのメモリ領域は、実際にはこれらの部品を作っています。

プログラムカウンタ

プログラムカウンタは、プライベートスレッド、小さなメモリ空間であり、それは、Java仮想マシン仕様での任意の領域のOOMの状況を指定していない唯一のものです。

VMスタック

VMスタックとプログラムカウンタ、プライベートスレッドのと同じ、およびスレッドと同じライフサイクル。各データスタック、プライベートである他のスタックへのアクセスを許可しない、方法が同時に実行されるたびにスタックフレームを作成し、各方法は、プロセスの完了の実装まで呼び出され、仮想スタックフレームに対応プロセススタックにスタックからマシンを描きます。仮想マシンのスタックを参照してください既知の基本データ型とオブジェクトの様々な主記憶をコンパイルします。

ネイティブメソッドスタック

本地方法栈与虚拟机栈发挥的作用非常相似,其主要区别是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地房发展则是为虚拟机用到的 Native 方法服务。

Java 堆

Java 堆是垃圾收集器管理的主要区域,主要用于存放对象的实例,自然而然就成了 Java 虚拟机中管理内存最大的一块,并且它可以处于物理上不连续的内存空间中,Java 堆在虚拟机启动的时候就进行创建,并被所有线程所共享。

方法区

方法区和 Java 堆一样,是各个线程共享的内存区域,主要存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。这个区域的内存回收目标主要是针对常量池的回收和对类型的写在,较少发生垃圾收集行为。

上面对 Java 虚拟机结构进行了非常精简的讲解,大家可还对此清晰了一些?如果还是没有太透彻其实没有关系,多回顾几遍,最好能自己画一个图,在一边进行理解。明天我们再来讲一讲我们另外一个面试非常高频的考点:垃圾回收算法,一起来探究 Java 虚拟机到底是怎么来回收一个无用的对象的。

おすすめ

転載: www.cnblogs.com/liushilin/p/11014168.html