問題タブ [eclipse-memory-analyzer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
405 参照

android - 「不明」タグを持つ Java MAT ヒストグラム クラス

MAT で (Android) ヒープ ダンプを開き、ヒストグラムに移動して、対象のクラスの「最短パスをマージする...」などを選択すると、Unknown タグは何を意味しますか?

ここみたいに:

Thread や System クラスのような他のタグが不明な場合もあります。

未知数は GC の対象であり、メモリ リーク分析では無視される可能性があると誰かが主張したので、私はこれを尋ねます。これについて信頼できる情報源を見つけることができませんでした。誰かがこれを確認できますか?

0 投票する
2 に答える
906 参照

android - メモリ アナライザー ツール - Android

アプリケーション アクティビティでウィンドウ リークが発生しましたが、これを修正しました。しかし、Android のメモリ アナライザー ツール - ヒストグラム ビューを使用してアプリをテストすると、アクティビティの 2 つのインスタンスが見つかりました。

クラス名 | オブジェクト | 浅いヒープ | 保持ヒープ

. MATDemoActivity. | | | | | |
com.pace.mat.MATDemoActivity | 2 | 368 |

合計: 1 エントリ (2,195 フィルタ)| | | | |

メモリリークがないのに、どうやって2つのオブジェクトになるのでしょうか? MAT結果のデータを理解するのを手伝ってください....よろしくお願いします

このリンクで完全なコードと関連する議論を見つけてください。

コード内の Android メモリリーク

=================

Activity 1st -> 2nd -> 1st から始めるとわかりました。1 番目のアクティビティ クラスの浅いヒープ = 2 および 2 番目のアクティビティ クラス = 1 で、1 番目から移動する場合 -> 2 番目 -> 1 番目 -> 2 番目 ... 1 番目のアクティビティ クラスの浅いヒープ = 1 および 2 番目のアクティビティ クラス = 2。

だから私は起動モードで試しました。すべてのアクティビティに android:launchMode="singleTask" を設定しました。現在、両方のアクティビティの浅いヒープは、ページに移動した回数と同じです。しかし、この起動モードでは複数のインスタンスが許可されていないため、浅いヒープ オブジェクトのカウントが 1 にならないのはなぜですか?

これをよりよく理解するのに役立つアイデアを共有してください。

0 投票する
2 に答える
1967 参照

android - Eclipse での MAT の使用とメモリ リークの解決

ここに画像の説明を入力Android プロジェクトのメモリ使用量を分析するために、Eclipse の MAT を使用しています。

利用した

私の onCreate().. で myapp.hprof ファイルを生成します。次に、「hprof-conv myapp.hprof mat.hprof」を使用して mat.hprof に変換します。

Eclipse を使用して「mat.hprof」を開いたところ、大量のリークが表示されました。

私は、これらのリークを分析して解決する方法を知りません。

例:

関連するソース ファイルを MAT で開くことができません。

助けてください。

ありがとう
_

0 投票する
1 に答える
1406 参照

android - アクティビティでのAndroidメモリリーク

MATツールを使用してアプリケーションをテストしていて、メモリリークがあることがわかりましたが、コード内でそれを見つけることができませんでした。同じように私を助けてください。

//最初のアクティビティ

//2番目のアクティビティ

新しいスレッドを作成して、アクティビティを開始しています。これにより、アクティビティクラスの新しいインスタンスが作成されますか?

0 投票する
2 に答える
21841 参照

java - Eclipse ランタイム環境の変更

MemoryAnalyzer を実行するには、Java ランタイム環境 (JRE) または Java 開発キット (JDK) を使用できる必要があります。次の場所を検索した後、Java 仮想マシンが見つかりませんでした: C:\Documents and Settings......

私の質問は、JRE または JDK のパスを変更するにはどうすればよいですか?

私はEclipseを完全に正常に動作させていることに注意してください。

0 投票する
1 に答える
326 参照

android - Eclipseメモリアナライザー-リークを見つけるのに役立ちます

Androidアプリケーションでメモリリークを見つけようとしています。私は次の状況にあります:

クラスAは、スレッドを作成するクラスA$24を作成しました。このスレッドにはクラスAへの参照があるため、これがリークです。A $ 24はクラスAで作成された匿名のクラスであることを理解していますが、コードのどの行で、どこで作成されたかを確認するにはどうすればよいですか。私の問題は、問題のあるスレッドが誰であるかを理解することです。

0 投票する
2 に答える
2249 参照

eclipse - Eclipse Memory Analyzer Tool を使用して、実行中のプロセスからヒープをダンプするにはどうすればよいですか?

Eclipse から実行する単純なコンソール アプリケーションを作成しました (ファイルを右クリックし、[Java アプリケーションとして実行] を選択します)。そこにスリープを入れたので、Aquire Heap Dump ダイアログを開始したときにプロセスがまだ実行されていることを確認できます。ダイアログを開始し、更新をクリックすると、ローカル プロセスが一覧表示されません。

Eclipse のエラー ログを確認したところ、IBM VM プロセスの一覧表示に問題があったことしか報告されていません (HPROF プロセスは構成され、正常に動作しています)。

私は何を間違っていますか?

0 投票する
0 に答える
159 参照

android - Google マップから静的マップを取得する - メモリ リークがありますか?

これは私の最初の Android アプリケーションであり、順調に進んでいますが、LogCat で GC_CONCURRENT メッセージを受け取り始めました。これはガベージ コレクターであり、log cat で報告されるたびに約 %6-%7 解放されているようです (4-5 回のようです)。これが漏れがあることを意味するかどうかはわかりませんか?

MAT プラグインをインストールしたところ、次のように表示されました。

http://imageshack.us/a/img694/5589/suspectandroid.png http://imageshack.us/a/img694/5589/suspectandroid.png

http://imageshack.us/a/img820/4295/domtreeandroid.png http://imageshack.us/a/img820/4295/domtreeandroid.png

ビットマップ関連のものでメモリの 60% 以上を占めているように見えますか?

ビットマップを取得するための私のコードは次のとおりです。

潜在的なメモリリークを防ぐためにハンドラーを静的にする必要があるという警告が表示されますが、それが私に影響を与えているかどうかはわかりませんか? または、マップがサーバーから読み込まれた後に UI を更新する方法。

0 投票する
3 に答える
2399 参照

android - メモリ ダンプからプリロードされたシステム ドローアブル (ビットマップ) の ID または名前を見つける方法

私たちのアプリのメモリ使用量を分析していて、Drawables数メガバイトのヒープを常に「食べる」奇妙な を発見しました。以下は、MATのスクリーンショットです。

ドミネーターツリー 2 つのかなり大きなビットマップを持つドミネーター ツリー

path_to_gc_roots 上記のビットマップのいずれかの GC ルートへのパス

このビットマップは、アプリの使用時間や集中度に関係なく、携帯電話 ( Samsung Galaxy Nexus、OS 4.1.1 )のヒープ ダンプに常に表示されます。

私はすでに MAT を使用してこのビットマップのソースを検索しようとしましたが、うまくいきませんでした。私が見つけることができたすべての有用な情報は、ビットマップでwidthありheight、両方とも512x512です。 bitmap_info

しかし、私たちのアプリには 512x512 のドローアブルが 1 つもありません。これは「システム」のドローアブルだと思います。しかし、正確には何ですか?なぜそんなに大きいのですか?

android.content.res.Resourcesクラスのソースコードも調べて、sPreloadedDrawablesフィールドの使用法を検索しましたが、運もありませんでした。メモリ ダンプから得られるのはkey配列sPreloadedDrawablesだけですが、このキーからファイル名またはリソース ID を特定できません。

だから、私の質問は次のとおりです。

  • このビットマップの名前または ID を特定するにはどうすればよいですか?

  • この巨大なビットマップがロードされる理由と、それらが常にメモリにとどまる理由は何ですか?

更新

メモリ ダンプからこのビットマップを調べる方法を見つけました。この 2 つのビットマップは単純なグラデーションで、1 つは黒、もう 1 つは白です。これはHolo.LightおよびHolo.DarkICS テーマのリソースだと思います。しかし、私の 2 番目の質問はまだ現実的です: なぜこのビットマップは常にメモリに残るのでしょうか? それらをアップロードまたはリサイクルする方法はありますか?

0 投票する
2 に答える
10868 参照

android - MAT (Eclipse メモリ アナライザー) - メモリ ダンプからビットマップを表示する方法

Eclipse Memory Analyzer (MAT とも呼ばれます)を使用して、Android アプリのメモリ使用量を分析しています。android.graphics.Bitmapヒープの大部分を使用して、クラスの奇妙なインスタンスを見つけることがあります。問題は、このビットマップのソースが見つからないことです。 filenameresourceIDも何もありません。ビットマップについて見つけることができるすべての情報は次のとおりです。 bitmap_info

画像ピクセルの配列を持つフィールドがあるmBufferと思います。しかし、それは PNG ではなく、内部の Android 形式です。

質問: このビットマップで表されるイメージをメモリ ダンプから表示するにはどうすればよいですか?