Spring Batchを使用してアプリケーションを作成しました。 VisualVMでは、ヒープサイズが約22 MBであることがわかります。しかし、Process Explorerを使用して(Windows上で)それがどれだけのメモリを使用しているかを見ると、その差は大きくなります(プライベートバイト - 71560Kとワーキングセット - 80388K)。これを説明する方法は? このメモリを使用する他のものは何ですか?Javaプロセスおよびヒープサイズで使用される合計メモリ
おかげ
Spring Batchを使用してアプリケーションを作成しました。 VisualVMでは、ヒープサイズが約22 MBであることがわかります。しかし、Process Explorerを使用して(Windows上で)それがどれだけのメモリを使用しているかを見ると、その差は大きくなります(プライベートバイト - 71560Kとワーキングセット - 80388K)。これを説明する方法は? このメモリを使用する他のものは何ですか?Javaプロセスおよびヒープサイズで使用される合計メモリ
おかげ
は、ネイティブスペース(スタック)を忘れないでください!ヒープはオブジェクトのみを表し、スレッド/プリミティブは追加のメモリを占有します。また、AFAIKは、一度プロセスがメモリを占有すると、内容がガベージコレクトされても、時々OSに戻されることはありません。さらに、私はVisualVMについてはわかりませんが、eclipse MATは "現在"のヒープしか表示しません(GCがその時点で実行された場合はガベージコレクションされません)。また、jstatを見たいかもしれません。
共有ライブラリ、スレッドのスタック、perm gen、ダイレクトメモリ、メモリマップファイルがあります。
ただし、JVMは起動時に最大ヒープサイズを割り当てます。使用量はそれほど重要ではありません。