面接に向かう途中「チン、チン、チン…」マスター、ここはどこですか?まだ面接に急がなければなりません。 「マスター:」 もうすぐです。次の交差点に着きます。私は本当にこの人たちを尊敬しています。彼らは運転できないのに、とにかく車に乗ろうとし続けている。 運転手の苦情を聞いていると、リメリック(韻文)を思い出さずにはいられなかった。赤いテールランプがいたるところに灯り、汽笛の音が耳に響く。長い間の遅延を心配し、頭は雷のように落ち込んでいます。 車を降りるとすぐに、素晴らしいホテルに駆け込みました。いやいや、それはビジネスビルです。ロビーはとても豪華で、ちょっと幻想的な気分になりました。 面接プロセス「ノック、ノック、ノック」「どうぞお入りください」 「インタビュアー:」あなたはハンサムな若者ですね。若者たちはエネルギーに満ち溢れている。簡単な自己紹介をお願いします。 「阿Q:」こんにちは、インタビュアーさん。私の名前は「シャドウロード」です。私はイオニア出身です。私はリーグ・オブ・レジェンドで最強のミッドレーナーです(異論は受け付けません)。ソロキルに関しては誰も私に勝てません。私のモットーは「見えない刃こそが最も致命的である」です。もちろん、Ah Qと呼んでいただいても結構です。こちらが私の履歴書です。 「インタビュアー:」Ah Q、挨拶はやめて、本題に入りましょう。 JVM に関する知識が最も豊富に書かれているので、まずは仮想マシン スタックに関する理解についてお話しください。 「阿Q:」 心の中で思うこと: この波は自慢する価値がある。咳...咳...仮想マシン スタックは、初期の頃は Java スタックとも呼ばれていました。 JVM のランタイムデータ領域に存在するメモリ領域です。これはスレッドプライベートであり、スレッドの作成時に作成され、スレッドが終了すると終了します。 えーと。 。 。考えるふりをする?? ご存知のとおり、スタックにはプッシュとポップという 2 つの操作しかないため、ストレージを割り当てる高速かつ効率的な方法です。この場合、ガベージ コレクションの問題はありませんが、サイズが動的または固定されているため、スタック オーバーフローまたはメモリ オーバーフローの問題が発生します... インタビュアー: すみません、先ほどスタック オーバーフローとメモリ オーバーフローの問題が発生するとおっしゃいましたが、なぜこのような状況が発生するのか説明していただけますか? 「Ah Q:」はい、はい、仮想マシン スタックはスタック フレームで構成されており、各メソッド呼び出しはスタック フレームのプッシュに対応することはわかっています。 -Xss パラメータを使用してスタック サイズを設定できます。設定した仮想マシンのスタック サイズが非常に小さい場合、メソッドの呼び出しが多すぎると、つまりスタック フレームが多すぎると、StackOverflowError が発生し、スタック オーバーフローの問題が発生してしまいます。 スタック フレームが固定されておらず、動的に拡張するように設定されている場合、メモリが不足すると、スタックの拡張をサポートするのに十分なメモリがなくなります。このとき、OOM例外、つまりメモリオーバーフロー問題が発生します。 「インタビュアー:」ふーむ(うなずきながら)、若者は明確な考えを持っていることを示しています。スタック フレームを小さく設定しすぎると、スタック フレームのオーバーフローが発生するとおっしゃいました。もっと大きく設定すればスタックオーバーフローを完全に回避できるのではないでしょうか? 「阿Q:」これは私にとって罠のようです。私たちのような人間は、一般的に中庸の原則を主張する傾向があるため、このような絶対的な質問を聞くと、賢明に答えなければなりません。いいえ、いいえ、いいえ、スタック サイズを調整しても、スタック オーバーフローの時間を「遅らせる」か、スタック オーバーフローのリスクを軽減することしかできません。 例を挙げてみましょう。 ビジネス ロジック メソッドを 5,000 回呼び出す必要があるが、この時点でスタック オーバーフロー エラーがスローされるとします。 -Xss を設定することで、オーバーフローが 7000 回の呼び出し後にのみ発生するようにして、スタック スペースを増やすことができます。この時点で、スタック サイズを調整することは理にかなっています。これにより、ビジネスを正常にサポートできるようになります。 「デッド再帰」状況が発生すると、スタック サイズをどれだけ増やしてもオーバーフローが発生し、意味がなくなります。 インタビュアー: では、この簡単な小さなプログラムを見てみましょう。メモリ内でどのように実行されるのか、大まかに教えていただけますか?
より理解を深めるために写真をご覧ください 「ああQ:」まずコードをコンパイルし、バイトコードファイルを確認します。上図の左側に示すように、実行プロセスは次のようになります。
「インタビュアー:」 心の中では、この人は大丈夫そうだ。それはいい指摘ですね。メソッドで定義されたローカル変数がスレッドセーフであるかどうか教えてください。 「Ah Q:」では、もう少し例を挙げて説明しましょう。
少しわかりにくいかもしれないので、まとめると、オブジェクトがメソッド内で生成および破棄され、外部に返されない場合は、スレッド セーフティの問題はありません。逆に、クラス自体がスレッドセーフでない場合は、スレッドセーフの問題が発生します。 インタビュアー: 「悪くないですね。納得できました。では、ヒープ メモリについての理解をもう少し詳しく教えてください。」 「阿Q:」ああ、今日は疲れた。私は一日中このことについて話してきましたが、これ以上は言いたくありません。 「インタビュアー:」では、今日はここまでにして、戻って通知を待ちましょう。 この記事はWeChatの公開アカウント「A Q Talks Code」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合はAQ Says Code公式アカウントまでご連絡ください。 |
<<: クラウドネイティブデータセンターの革新を目撃してください!智玲雲2021パートナーサロンが北京で開催
frontrangehosting は設立から 2 年未満の VPS 事業者です。VPS のパフォー...
この記事では、Prometheus の原理をグラフィカルに分析します。この記事の主な内容は次のとおり...
[51CTO.com からのオリジナル記事] 今日、クラウド コンピューティングは企業にとってトレン...
[[429309]]分散機械学習が登場した理由は非常に単純です。一方で、トレーニングに利用できるデー...
米国のCN2 GIA(AS4809)は、中国と米国が民間レベルで提供した最も初期かつ最速のネットワー...
デジタル経済の急成長に伴い、クラウドコンピューティングに代表される新世代情報技術の革新と産業調整のペ...
Dawang Data は 7 月にホットなプロモーションを開始しました。湖北省コア データ センタ...
最近、Kubernetes が Docker を放棄するというニュースが業界で広く注目を集めています...
米国時間7月12日、Red Hatはマット・ヒックス氏をRed Hatの社長兼CEOに任命したことを...
[[264128]] 1. 一般的な OSD のトラブルシューティングOSD のトラブルシューティン...
最近、中国ではスマートシティの建設が加速し続けており、複数のプロジェクトへの入札が開始されている。近...
最近、admin5ウェブマスターウェブサイトは「4月の国内インターネット市場取引概要」を独占的に公開...
クラウド コンピューティング サービスの 3 つの基本モデルは、サービスとしてのソフトウェア (Sa...
[51CTO.com クイック翻訳] サービスプロバイダーと企業は、今日のクラウドベースのアプリケー...
半月前、「seoトレーニング」というキーワードを検索していたとき(キーワードのランキングを追跡して観...