2016-11-30 3 views
0

Androidアプリケーションでのメモリ使用に関する推奨制限はありますか?それは40MB以下でなければなりません..時には、私のアプリケーションでは、重いアイテム(ビデオ付きのニュースフィード)をrecyclerviewに読み込むときに、Androidモニターで最大100MBを使います。 。Androidアプリケーションでのメモリ使用の推奨制限はいくらですか?

+2

の推薦がある階層減少します:ようにできるだけ少ない... – Selvin

答えて

3

可能な限り少し使用してください。

複数の実行中のプロセスを可能にするには、Androidはアプリごとalloted ヒープサイズのハード制限を設定します。正確なヒープサイズの上限は、デバイスが利用可能なRAMの量に基づいて 全体で になります。あなたのアプリがヒープ容量に達して、 にさらにメモリを割り当てようとすると、システムはOutOfMemoryErrorを投げます。

メモリが不足しないように、現在の デバイスで利用可能なヒープスペースを確認するには、システムに を問い合わせることができます。 getMemoryInfo()を呼び出すことによって、この図のシステムを照会することができます。これは、戻り利用可能なメモリ、総メモリ、およびシステムは、プロセスを強制終了し始める下にメモリ閾値 メモリレベルを含むデバイスの現在のメモリ状態についての情報を提供 、 オブジェクト ActivityManager.MemoryInfo。 ActivityManager.MemoryInfoクラスも、単純なブールフィールド、デバイスはメモリが不足しているかどうかを示します lowMemoryを公開します。

次のコードスニペットは、 getMemoryInfo()を使用する方法の一例を示しています。メソッドを呼び出します。

public void doSomethingMemoryIntensive() { 

    // Before doing something that requires a lot of memory, 
    // check to see whether the device is in a low memory state. 
    ActivityManager.MemoryInfo memoryInfo = getAvailableMemory(); 

    if (!memoryInfo.lowMemory) { 
     // Do memory intensive work ... 
    } 
} 

// Get a MemoryInfo object for the device's current memory status. 
private ActivityManager.MemoryInfo getAvailableMemory() { 
    ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
    ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); 
    activityManager.getMemoryInfo(memoryInfo); 
    return memoryInfo; 
} 

は、詳細については、このlinkを参照してください。

1

一般的な推奨事項はできるだけ少なくすることです。 これを達成する方法は?

  • は(ほとんどの場合、あなたがPicassoFrescoまたはGlideのような第三 パーティのライブラリを使用する場合があります)を適切ビットマップを処理します。
  • android-studioのヒープダンプを使用して、RAMを消費しているものを分析して、アクティビティのリークをチェックします。
  • あなたは、ネットワークから大量のデータを要求しているなら、あなたはflatbuffersで見ることができ、それらは深いビューを使用していないネットワーク要求
  • のメモリフットプリントとペイロードが
関連する問題