[方法]のJavaインタビュー質問メモリスタック(スタック)、ヒープ(ヒープ)と静的記憶領域を説明するための

:Javaのインタビューの質問は、メモリ・スタック(積み重ね)、ヒープ(ヒープ)と静的記憶領域の使用を説明します

ヒープ領域:インスタンスを保存するために、専用の(新しいオブジェクトおよび配列を作成した)オブジェクト、実際には、唯一のオブジェクトのインスタンスが格納された属性値は、属性タイプとオブジェクト自体のタイプ及び他のマーカーはない(メソッドオブジェクトが格納されていますスタックに格納された命令)

1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身. 3.一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。 

 

スタック領域:ヒープ後のオブジェクトインスタンス内の良好な分布は、スタック、ヒープ内に保存されるオブジェクトのインスタンスを簡単に見つけ、ヒープ内のオブジェクトのインスタンスの位置を突き止めるために使用される4バイトのメモリアドレスを必要とします。

1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 4.由编译器自动分配释放 ,存放函数的参数值,局部变量的值等. 

 

静的エリア/メソッドエリア:

1.方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。 3.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 

 


添付ファイル:

ヒープとスタックは、それが明確に理解されるべきで、プログラムの鍵は実行されています。
ここに画像を挿入説明
ユニットが稼動しているスタックとヒープは、ストレージの単位であるとき。

ヒープメモリが対象です。スタックは、ヒープ内のオブジェクトに基本データ型と参照を格納しています。オブジェクトの大きさが推定されていない、または動的に変更することができるが、スタックは、1つのオブジェクトのみを(分離の利点をスタック)4btyeの基準に対応します。

なぜヒープを区別し、それからスタックする必要がありますか?スタックは、データを保存することはできませんか?

まず、ソフトウェア設計の観点から、スタックは、処理ロジックを表し、データはヒープを表します。この分離、処理ロジックが明確になるように。分割統治のアイデア。この分離は、モジュラー思考は、ソフトウェア設計のあらゆる側面に反映されています。
第二に、単離されたスタックとスタック、スタックの内容スタックの複数の(同一のオブジェクトにアクセスする複数のスレッドとして理解されるべきで)共有することができるようになっています。この共有の利点は多いです。一方で、これは(例えば:共有メモリ)のデータ相互作用の効率的な共有を提供し、他方では、ヒープ・キャッシュは、スペースを節約する、スタックの全てへのアクセスを共有し、一定にすることができます。
必要ランタイムスタックの、このようなシステムのコンテキストを保存するように実行されているため第三に、我々は、セグメントを分割する必要があります。スタックだけなので育つことができ、その記憶内容をスタックする能力に制限されます。それは動的に成長させることが可能となるように、ヒープ内の盛り上げ異なるオブジェクトは、スタックにスタック内の唯一の対応するアドレスレコードを、必要に応じて、動的に増加したスタックとヒープ分割することができます。
第四に、それはオブジェクト指向のヒープとスタックの完璧な組み合わせです。実際には、途中でオブジェクト指向プログラミングは、プログラムの以前の構造は、実装の違いがありません。しかし、オブジェクト指向の導入は、問題へのアプローチを考えるようにして変更されているが、思考のより自然な方法があります。我々はオブジェクトを開くと、オブジェクトのプロパティが実際にヒープに格納されたデータであることがわかります。そしてオブジェクト(メソッド)の行動、スタック上のロジックを実行することです。我々はオブジェクトを作成するときに、データ構造の製造である実際には、ロジックは、データを処理するために書かれました。認めざるを得ない、オブジェクト指向設計、本当に美しいです。

おすすめ

転載: www.cnblogs.com/insist-bin/p/11109423.html