2016-11-30 11 views
0

Android 애플리케이션의 메모리 사용 권장 권장 사항이 있습니까? 그것은 40 MBs 또는 무언가 아래에 있어야합니다. 가끔 내 응용 프로그램은 recyclerview로 무거운 항목 (비디오와 함께 뉴스 피드)를로드 할 때 안드로이드 모니터에서 최대 100 MB를 사용하고 우리가 따라야 할 정상적인 메모리 사용량이 있는지 궁금해. .Android 애플리케이션에서 권장되는 메모리 사용 제한은 얼마입니까?

+2

계층 구조 :로 할 수있는대로 ... – Selvin

답변

3

최대한 조금씩 사용하십시오. 여러 실행중인 프로세스를 허용하려면

는, 안드로이드는 각 앱 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

가능한 한 적게 사용하는 것이 좋습니다. 어떻게 달성할까요 ??

  • 제대로 (당신이 Picasso, Fresco 또는 Glide 같은 3 파티 라이브러리를 사용할 수 있습니다 대부분의 경우에서) 비트 맵을 취급.
  • android-studio에서 힙 덤프를 사용하고 RAM을 소비하는 것을 분석하고 활동 누출 여부를 확인하십시오.
  • 당신은 당신이 그들이 네트워크 요청의 메모리 풋 프린트와 페이로드를 줄일 수 flatbuffers에 모습을 가질 수있는 네트워크에서 많은 데이터를 요청하는 경우는
  • 깊은보기를 사용하지
  • 는 추천입니다
관련 문제