how fix memory leak android apps using ddms tool
Androidアプリケーションのメモリリークをテストして修正する方法:
アプリをPlayストアにプッシュする前に、メモリの最適化は開発者にとって大きな課題です。
セレンテストインタビューの質問と回答
アプリのパフォーマンスは、その機能と同様に重要です。この記事はに基づいています ヒープ分析 DDMS(Dalvik Debug Monitor Service)を介したアプリケーションの作成。
ほとんどのAndroidアプリケーションはJAVAで実行され、スレッドの問題もあります。
重要な注意点 – Dalvik Debug Monitor Server(DDMS)ツールは、Android Studio3.0以下のバージョンでのみ使用できます。 Studio 3.0以降を使用している場合は、Android Profilerを使用して、アプリのCPU、メモリ、ネットワークの使用状況をプロファイリングしてください。
このチュートリアルは、DDMSツールを使用してAndroidアプリケーションのメモリリークを理解して最適化するのに役立ちます。メモリを分析すると、メモリの概念がわかり、メモリ値を最適化することで、メモリリークが少なくなります。
学習内容:
一般的に使用される用語
以下に、このプロジェクトで使用する一般的な用語の一部を示します。
- ヒープ –割り当てに使用でき、動的に分散されるのはランタイムメモリです。プラットフォームに依存します。
- Dalvikヒープ – Dalvikヒープは、zygoteによるクラスとデータの組み合わせです。
- 受精卵 – Zygoteは、システムのロード時にアプリプロセスを起動するのに役立ちます。
- PSS –これは、プロセスのメモリ内のページ数であり、KB単位で測定されます。
- ガベージコレクション –ガベージコレクションは、まだ使用されているすべてのオブジェクトを追跡し、残りをガベージとしてマークします。
DDMS(Dalvikデバッグモニターサーバー)
これは、ランタイムパフォーマンスモニタリングの分析に役立つツールです。また、アプリケーションのプロファイリングとチューニングにも役立ちます。
DDMSが提供する主なサービス
- 合計ヒープオブジェクト割り当て統計
- アプリスレッドの統計
- デバイスのスクリーンキャプチャ
- デバイスファイルエクスプローラー
- 着信とSMS検査
- 位置データ検査
- ネットワーク静的コンソール
- Logcat(Verbose、Debug、Assert、Error)
メモリーリーク:
アプリケーションは、目的を果たした後でもオブジェクトを長期間保持し、このオブジェクトはGCによって収集されません。
メモリリークの検出:
一般に、Androidアプリケーションは、応答しない、または最悪の場合、メモリ不足の例外が発生したアプリに対してダイアログポップアップを表示します。すべてのデバイスのヒープサイズは制限されており、アプリケーションが追加のメモリを試行すると、例外が発生します。
Androidデバイスの合計ヒープサイズを確認するには、次のコマンドを使用できます。
- cat / proc / meminfo | grep MemTotal
- adb –d pull /system/build.prop
ADTを介してDDMSを起動する手順
ステップ1: adtバンドルを起動します(簡単に利用できます ここに )または、以下のリンクを使用して、Windows構成用のADTバンドルをインストールします。
Windows 32: https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip
Windows 64: https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
ステップ2: SDKをクリックします
ステップ3: ツールをクリックします
ステップ4: monitor.bat(DDMS)をクリックします
注意: ヒープ分析には、debugapkが必要です。
ADTバンドルが正常にインストールされたら、コマンドプロンプトに移動します(adbが内部コマンドまたは外部コマンドとして認識されない場合はパスを設定します)。
adbコマンドを使用してシステムに接続されているデバイス(adbデバイス)を確認します。デバイスが接続されると、アプリケーションのパッケージ名でDDMS画面に接続されます。
AndroidStudioを介してDDMSを起動する手順
スタジオ->ツール-> Android-> Androidデバイスモニター->メニューからDDMSボタンをクリックします。
ヒープの分析の手順
- DDMS画面に表示されているアプリのパッケージ名を選択します。
- ヒープの更新アイコンを選択します。
- すべてのアクションの値を取得する前に、原因GCをタップします。
- コマンドプロンプトでコマンドを実行します– adb shell dumpsys meminfoそして、Enterキーを押します。
- 値はコマンドプロンプトに表示されます。
- PSS total、native、dalvik、heap size、heap free、heap-allocatedは、開発者がメモリクラッシュをデバッグするのに役立つ値です。
- データのより良い表現は、開発者にとって作業を容易にします。
- データは次のようになります。
- 原因GCをクリックした後のオブジェクトの値。
- PSS合計
- ネイティブヒープ-ヒープサイズ
- Dalvikヒープ-ヒープサイズ
- ヒープサイズの合計
- ネイティブヒープ-ヒープ割り当て
- Dalvikヒープ-ヒープ割り当て
- ヒープ割り当ての合計
- ネイティブヒープ-ヒープフリー
- Dalvikヒープ-ヒープフリー
- ヒープフリーの合計
- オブジェクト(DDMSからGCの原因をクリックした後)
- %使用済み%無料
理想的なテスト: アプリの分析を改善するには、アプリをバックグラウンドに維持してさまざまなシナリオを実行し、同じページにアクセスして、これらの一般的に使用されるシナリオの完全なフローを実行してください。
最も一般的なクラッシュはメモリ不足例外(OOM)であるメモリが原因で発生するため、ローエンドデバイスを使用してみてください。
DDMS画面
Dalvik値のサンプル
結論
この記事は、DDMSツールを使用してヒープ分析をテストするために使用できます。パラメータの正しい値は、Android開発者がメモリを最適化するのに役立ちます。
テストツールの知識は十分ですが、それらのツールを効率的に使用することは芸術と見なされます。
ハッピーラーニング!!
推奨読書
- AndroidおよびiOSモバイルアプリをテストするためのAppiumチュートリアル
- LinuxおよびWindows上のJava、C ++用のトップ20以上のメモリリーク検出ツール
- TestCompleteツールを使用してAndroidアプリケーションを自動化する方法
- Robotium入門-最も人気のあるAndroidアプリケーションUIテストツール
- AndroidおよびiOSデバイス用の2021年の10の最高のプロジェクト管理アプリ
- モバイルUIテストチュートリアル(iOSおよびAndroidアプリのGUIテスト)
- AndroidアプリのAppiumテストを作成する
- フリーランサーのための10のベストタイムトラッキングアプリ(2021SELECTIVE)