質問

" committed"の正確な意味を知りたいメモリは、値がMemoryUsageクラスから照会されるときです。このクラスは、「committedは、Java仮想マシンで使用できることが保証されているメモリの量(バイト単位)を表す」と説明しています。これは、メモリがjvmプロセスによって使用されており、javaプロセスによって解放されるまで他のプロセスで使用できないことを意味しますか、それともその量のメモリを割り当てようとするとjavaプロセスが成功することを意味しますか?これは実装固有のものかもしれませんが、ホットスポットにのみ興味があります。

役に立ちましたか?

解決

コミットされたサイズは実際に割り当てられたメモリであり、使用されたサイズは実際のデータの保存に使用されるサイズです(〜=コミットされた場合、メジャーGCの時間であり、ヒープを増やす可能性があります)。最大サイズは、ヒープが成長できるハードリミットです-十分でない場合、JVMはOutOfMemoryErrorをスローします。

メモリがコミットされると、間違いなく使用できます。また、JVMが(最新のOSで)より多くのメモリをコミットできないのは、ハードウェアの仮想メモリが不足している場合のみです。

これらのサイズはすべて、ヒープ領域のサイズのみを示しています。 JVMには他のメモリ領域(スレッドスタック、JITキャッシュなど)もあります。通常、ヒープ領域は最大で、これはプロセスのフットプリントにほぼ対応しています。

2つのメモ:

  • コミットされたサイズが物理メモリに収まらない場合、その一部がページファイルにスワップされます。これにより、GC中に大幅な速度低下が発生します。そのような場合、ヒープサイズを減らすことでアプリのパフォーマンスを改善できます。
  • 一部のオペレーティングシステムでは、メモリの二重予約が可能です-使用しようとしない限り、必要なだけ割り当てることができます(どのOSであったかを忘れた-誰かが私を埋めてくれます)

他のヒント

"これは、メモリがjvmプロセスによって使用されており、他のプロセスでは使用できないことを意味しますか?正しいものになります。そのため、OSがJVMプロセスによって使用されると見なすメモリ量よりも少ない(または等しい)。

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (リンクするアンカーはありません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top