%20%E3%81%8C%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
非常に単純な質問です。RAM が制限された開発マシン (RAM 8GB、Win 7 x64、ページファイル 8GB) では、使用可能な RAM が不足すると、まずプログラムが遅くなり始め、最終的にはクラッシュします。ほとんどの場合、JVM が最初にクラッシュしますが、これは非常に喜ばしいことです。どうしてこのようなことが起こるのでしょうか。ページファイルがまったく存在しないのと同じですが、使用済み RAM が 8GB に達すると、JVM (および場合によっては他のプログラムも) がほぼ瞬時にクラッシュします。
はい、私は主にハードウェアによって導入されたすべてのページング メカニズムをよく知っています。これは、ページ ファイルが使用されていることや存在していることさえ知らない状態で、十分な RAM があるかのようにページ ファイルで動作するはずです。では、なぜ実際には非常に異なる動作が見られるのでしょうか。
答え1
jprofiler を実行してヒープ メモリを調査できますか。また、実行中の Java プログラムのメモリ要件は明確ではありません。通常、8 GB の RAM が適切であると考えられています。Java プログラムが多数のスレッドを作成し、スレッドが終了しない場合は、これらすべての問題が発生する可能性があります。作成されたオブジェクトの量とスレッドの性質について、Java プログラムを確認してください。