[解決済み] デフォルトのスタックサイズ、スタックサイズを大きくすることは可能ですか?
質問
私は、各スレッドがそれぞれ
stack
. プリミティブ型と参照はスタックに保持され、オブジェクトはスタックに保持されないということです。
私の質問は
-
スタックはどのくらい大きくなるのでしょうか?(パラメータで
Xms
と -Xmx
) - 成長を抑えることができるのか?
- スタックにデフォルトの最小値、最大値はありますか?
- ガベージコレクションは、スタック上でどのように動作しますか。
どのように解決するのですか?
スタックはどのくらい伸びるのでしょうか?
という VM オプションを使用することができます。
ss
という VM オプションを使用して、最大スタックサイズを調整することができます。VMオプションは通常-X{option}で渡されます。ですから
java -Xss1M
でスタックサイズの最大値を1Mに設定します。
各スレッドは少なくとも1つのスタックを持っています。Java仮想マシン(JVM)の中には、Javaスタック(Javaメソッドコール)とネイティブスタック(VM内のネイティブメソッドコール)を一つのスタックにまとめ、quot;Managed to Native Frame" として知られているものを使ってスタックの巻き戻しを行うものがあります。
M2nFrame
. 一部のJVMは、2つのスタックを別々に保持しています。その場合
Xss
は、ほとんどの場合、Javaスタックのサイズを設定します。
多くのJVMでは、プラットフォームごとにスタックサイズに異なるデフォルト値を置いています。
この成長を制限することは可能ですか?
メソッド呼び出しが発生すると、そのスレッドのスタックに新しいスタックフレームが作成されます。スタックにはローカル変数、パラメータ、リターンアドレスなどが含まれます。Java では、スタックにオブジェクトを置くことはできず、スタックに格納できるのはオブジェクトの参照だけです。Javaでは配列もオブジェクトなので、配列もスタックに格納されません。ですから、ローカルプリミティブ変数やパラメータをオブジェクトにまとめるなどして量を減らせば、スタック上の容量を減らすことができます。実は、Javaのスタックに明示的にオブジェクトを置けないことが、パフォーマンスに影響を与えることがあります(キャッシュミス)。
スタックにはデフォルトの最小値または最大値がありますか?
先ほども言ったように、VM によって異なるため、バージョンアップで変更される可能性があります。以下を参照してください。 を参照してください。 .
ガベージコレクションはスタック上でどのように動作するのですか?
Javaにおけるガベージコレクションはホットなトピックです。ガベージコレクションの目的は、到達不可能なオブジェクトをスタックに集めることです。 ヒープ . そのため、「到達可能」の定義が必要なのです。スタック上のすべてのものは、GCにおけるルートセット参照の一部を構成しています。すべてのスレッドのすべてのスタックから到達可能であるすべては、ライブとして考慮されるべきです。Threadオブジェクトといくつかのクラスオブジェクトのような、いくつかの他のルートセット参照があります。
これは、GC上のスタックの非常に漠然とした使用法でしかありません。現在、ほとんどのJVMは世代別GCを使用しています。 この記事 は、JavaのGCについて簡単に紹介しています。そして最近、私は は非常に良い記事です。 .NETプラットフォームでのGCについて話している。Oracle JVMのGCはかなり似ているので、これも役に立つと思います。
関連
-
FindBugの使用概要
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] Javaで現在のスタックトレースを取得するにはどうすればよいですか?
-
[解決済み] Javaで、オブジェクトの大きさを決定する最も良い方法は何ですか?
-
[解決済み] Javaの "final "キーワードはどのように機能するのでしょうか?(オブジェクトを修正することは可能です。)
-
[解決済み] Java のガベージコレクションでは、円形参照はどのように扱われるのですか?
-
[解決済み] スタックは上に伸びるのか、下に伸びるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
Jsoup-Crawlingの動作
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
java.sql.SQLException: 結果セットの開始前
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
java 365*1000*60*60*24 計算問題