2016-10-17 11 views
0

MediaCenter.apkという名前のアプリで動画を再生できるボタンがあります。最近私たちはビデオを再生して終了するたびに見つけました。 mediacenterプロセスの仮想アドレスは約5784KB増加します(ただし、物理アドレスは変わりません)。そのため、仮想アドレスでは十分ではないため、ビデオプレーヤーのストレステストでプロセスがクラッシュします。コマンドpmap -x pidを使用して、メディアセンタープロセスの仮想メモリ使用量を確認し、増加した5784KBが /data/dalvik-cache/[email protected]@[email protected]で使用されていることがわかりました。アンドロイドの仮想アドレスでメモリリークを見つける方法は?

65b29000 5784  8  0  0 r--p /data/dalvik-cache/[email protected]@[email protected] 

ファイルのサイズがわかりました/data/dalvik-cache/[email protected]@[email protected]は5784KBにほぼ等しかったです。ファイル全体が中央メディアプロセスにメモリマップされているように見えました。しかし、どの段階でそのファイルがその過程でメモリマップされているかを知るにはどうすればよいでしょうか?動画プレーヤーが終了した後に仮想アドレスが公開されない理由を知るにはどうすればよいですか?

答えて

0

Android hprofツールは、アプリプロセスのメモリ使用量を示します。 以下はリンクです https://developer.android.com/studio/profile/am-hprof.html

あなたのデバイスで許可されている最大ヒープを知るには、以下のコードをyoutアプリケーションに追加します。

Runtime.getRuntime().maxMemory(); 
+0

ありがとうございます。しかし、hprofは、アプリケーションプロセスの物理メモリ使用量を分析するためだけに使用できるようです。私の場合は、物理アドレスではなく仮想アドレスにメモリリークがあります。 – tiger20081015

+0

私の考えでは、仮想アドレスはヒープスペース(RAMの使用量)です。物理メモリはファイルシステム上のapkサイズ以外のものです(Nand mem)。 hprofはヒープ解析を行います。 –

+0

申し訳ありませんが、ここで私が意味する仮想アドレスは、Linuxプロセスの仮想アドレスです。物理アドレスはRAMです。 – tiger20081015

関連する問題