JavaのStackOverflowErrorとOutOfMemoryErrorの違いは何ですか?
Javaプログラムを実行するたびに、オペレーティングシステムはJVMにメモリを割り当てます。 JVMは、このメモリを2つの部分に分割します。 1つはスタックメモリで、もう1つはヒープメモリです。スタックはメソッドの実行に使用され、ヒープはオブジェクトの格納に使用されます。スタックがいっぱいになると、JVMはjava.lang.StackOverflowErrorをスローし、ヒープがいっぱいになると、JVMはjava.lang.OutOfMemoryErrorをスローします。
StackOverflowError
- スタックはメソッドの実行に使用されます。メソッド呼び出しごとに、スタックメモリに1つのブロックが作成されます
- パラメータ、ローカル変数、オブジェクトへの参照などのメソッドに関連するデータは、このブロックに保存されます。
- メソッドの実行が終了すると、このブロックは、そこに格納されているデータとともにスタックから削除されます。
- メソッドを呼び出すときは常に、実行を終了してスタックメモリを離れる必要があります。
- メソッドがスタックに残っている場合、スタックはいっぱいになり、JVMはjava.lang.StackOverflowErrorをスローします。
OutOfMemoryError
- Javaで作成したオブジェクトは、ヒープメモリに保存されます。オブジェクトが不要になったら、メモリから削除する必要があります。
- ガベージコレクタは、ヒープメモリから不要なオブジェクトを削除します。
- オブジェクトにライブ参照がある場合、ガベージコレクタはそれらを削除しません。ライブ参照がないオブジェクトのみが削除されます。
- メソッドを呼び出すときは常に、実行を終了してスタックメモリを離れる必要があります。
- ヒープメモリに新しいオブジェクト用のスペースが残っていない場合、JVMはjava.lang.OutOfMemoryErrorをスローします。
-
JavaのJFrameとJDialogの違いは何ですか?
JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには
-
JavaのGridLayoutとGridBagLayoutの違いは何ですか?
GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル