2

実行中の Java アプリケーション、特に Android エミュレータで実行されているアプリケーションのプログラム カウンタ (PC) レジスタ値を取得することは可能ですか? たとえば、gprof は、プログラムの実行時間を消費している関数を見つけるために、PC レジスタ値をランダムにサンプリングします。このような概念は、JVM でも理にかなっていますか? 明確にするために、プログラムカウンターの実際の値が欲しいです。

また、コードがメモリ内でどのように「広がっている」かを測定する方法はありますか? これは、objdump によって返されるアドレスの範囲を調べることで、通常のプログラムである程度測定できます。ただし、このアプローチは共有ライブラリのアドレスを処理しません。これも、JVM のコンテキストでは理解できない概念です。

4

1 に答える 1

0

VisualVMのような多くのJavaプロファイラーは、サンプリングベースのプロファイリングを実行できます。これはおそらくあなたが説明したように機能します。

コードメモリの使用量に関しては、これがガベージコレクタの「永続的な生成」(PermGen)に主に含まれているものです。VisualVMもそれを表示できます。

于 2012-04-24T10:07:31.600 に答える