Javaネイティブメモリトラッキング

ネイティブメモリには何が保存されていますか?DirectBufferの利点

  1. Javaヒープの状態データを管理します(GC用)。
  2. ネイティブスタックであるJNI呼び出し。
  3. JIT(コンパイラーでさえ)はコンパイル時にネイティブメモリーを使用し、JITの入力(Javaバイトコード)と出力(実行可能コード)もネイティブメモリーに格納されます。
  4. NIOダイレクトバッファ。IBM JVMとホットスポットの両方で、nioダイレクトバッファーの最大値を-XX:MaxDirectMemorySizeで設定できます。デフォルトは64Mです。これを超えると、32Mに応じて自動的に増加します。
  5. IBMのJVMの一部のバージョンでは、クラスローダーとクラス情報がネイティブメモリに保存されます。
  6. DirectBufferアクセス​​は高速であり、JavaヒープからHeapBufferからローカルヒープにコピーする必要がありません。オペレーティングシステムはDirectBufferに直接アクセスします。DirectBufferオブジェクトのデータは実際にはネイティブヒープに格納されますが、参照はHeapBufferに格納されます。
  7. さらに、DirectBuffer参照はヒープの古い領域に直接割り当てられるため、その回復タイミングはFullGCにあります。したがって、DirectBufferの頻繁な割り当てを回避する必要があります。これにより、ネイティブメモリのオーバーフローが発生しやすくなります。

 

jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
 
# summary: 分类内存使用情况.
# detail: 详细内存使用情况,除了summary信息之外还包含了虚拟内存使用情况。
# baseline: 创建内存使用快照,方便和后面做对比
# summary.diff: 和上一次baseline的summary对比
# detail.diff: 和上一次baseline的detail对比
# shutdown: 关闭NMT

1.メモリモデルファイルをエクスポートします
jmap-dump:format = b、file = dumpfile.hprof


2.構成ネイティブビュー
java-XX:NativeMemoryTracking = summary -jarserver-examples-0.4.3- 
SNAPSHOT.jarを実行します

3.native
查看jcmdpidVM.native_memoryの概要

4.ネイティブメモリベースライン設定
jcmdpidVM.native_memoryベースライン

5.diff查看
jcmdpid VM.native_memory summary.diff

6.シャットダウン時に
-XX:+ UnlockDiagnosticVMOptions -XX:+ PrintNMTStatistics
を出力します。上記のコマンドを使用して、jvmシャットダウン時に全体的なネイティブメモリ統計を出力します。

7.関闭
jcmdpid VM.native_memory shutdown

まとめ

Javaスタートアップパラメータの最大ヒープが256Mに設定されているため、262144は256Mです。-Xmx256M

8.8。

Javaプロセスのメモリには、Java NonHeapスペース、Java Heapスペース、およびNativeHeapスペースが含まれることがわかっています。メモリはJavaNonHeap / Heapスペースによって消費されないため、NativeHeapスペースによってのみ消費されている疑いがあります。

したがって、maxMemory()はネイティブによって実装されているので、Javaドキュメントがその戻り値についてどのように説明しているかを見てみましょう。
* maxMemory()メソッドは、VM
が使用しようとするメモリの最大量を返すため、アプリケーションはメモリ負荷をより適切に管理できます。
実装に依存する-Xmxフラグを使用すると、このメソッドは
その値返します。*
表示されるデフォルト設定ヒープのサイズに似ています。システムではサードパーティのライブラリが使用されており、少なくとも1Gのダイレクトメモリサイズが必要です。システムのXmx設定は512Mです。そこで、DirectMemoryAreaサイズを指定するためにMaxDirectMemorySizeパラメーターを追加しました。

-XX:MaxDirectMemorySize設定の値は、プログラムで取得できます。

この記事は良いです:

https://blog.csdn.net/wang379275614/article/details/78471604?utm_medium=distribute.pc_relevant.none-task-blog-title-5&spm=1001.2101.3001.4242

おすすめ

転載: blog.csdn.net/liyang_nash/article/details/108416184