2016-05-03 5 views
-3

問題はありませんが、メインメモリにあるものを取得するだけで、現在のメモリ状態のコピーを取得することは可能です。私は、JavaでRAMのイメージを得る方法があることを意味します。メインメモリの内容をJavaで取得する

私は自分の質問を編集しています。ここにWindows 7のタスクマネージャのスクリーンショットがあります。私は、現在のメモリ使用量が3.27ギガバイトであることがわかり@peter

enter image description here

。だから、私はいくつかの読み込み専用メモリでそのすべてを得ることができます。私はOSを再起動すると、最後のメモリスナップショットが何であっても、中止したところから再開します。

答えて

1

「メインメモリ」の意味によって異なります。

JREは、その周りのOS、およびその逆からJavaプログラムを絶縁する

  • を設計されています。
  • は、他のオブジェクト「普通」のJavaで

の実装の詳細からJavaオブジェクトを絶縁するために、あなただけのクラスとオブジェクトは、パブリックメソッドを介して公開するものを見ることを得ます。

しかし、JavaはReflection APIを備えています.JREが許可するように設定されている場合は、これらの境界を突破して、JRE内のクラスとオブジェクトを詳しく調べることができます。

Oracle HotSpotでは、Java Servicability Agent(http://openjdk.java.net/groups/hotspot/docs/Serviceability.html)を使用してJREを起動できます。これにより、APIを介してJavaヒープの詳細を確認できます。しかし、あなたはまだJREプロセスによって要求されたメモリに制限され、そのヒープに割り当てられます。

さらに、JNIを使​​用してネイティブライブラリを作成することも可能です。 OSのアドレス空間をブラウズできるC API呼び出しがあります。他の人のアドレススペースを見るには、root(またはOSの同等のもの)でなければなりません。 CコードとJNIをJavaから呼び出すことができます。

+0

はい。私をJNIに紹介していただきありがとうございます。私は周りを見回し、私はこれにかなり長い時間を費やすと思う。 – Xtr33mm

2

はい、ヒープダンプと呼ばれます。

jmap -heap {pid} 

ヒープをファイルにダンプします。

jvisualvmを使用してヒープダ​​ンプを分析できます。

関連する問題