2013-01-07 2 views
0

전체 힙 크기에서 얼마나 많은 메모리가 Java로 장치를 가지고 있는지 확인하는 좋은 방법이 있습니까? 어도비 에어로 작성된 내 앱은 기본 자바 확장 프로그램을 사용하여 SD 카드에서 여러 이미지를로드합니다.안드로이드 힙 크기 확인

public boolean checkBitmapFitsInMemory(long bmpwidth,long bmpheight, int bmpdensity){ 

     long reqsize=bmpwidth*bmpheight*bmpdensity; 
     long allocNativeHeap = Debug.getNativeHeapAllocatedSize(); 
     final long heapPad=(long)Math.max(4*1024*1024,Runtime.getRuntime().maxMemory()*0.1); 
     if ((reqsize + allocNativeHeap + heapPad) >= Runtime.getRuntime().maxMemory()) 
     { 
      return false; 
     } 
     return true; 

    } 

그러나, 내 갤럭시 S2에 완전히 무시 것 같다 : 비트 맵이 메모리에로드 할 수 있는지 확인하기 위해이 코드 조각을 발견했다. 앱이 두 부분으로 구성되어 있기 때문일 수 있습니다. 하나는 Java이고 두 번째는 어도비 에어입니다. 응용 프로그램 메모리에 이미지를로드하기 전에 확인해야하는 다른 메모리 값이 있습니까? 감사합니다. 실행중인 응용 프로그램에서 사용할 수 Runtime.getRuntime().freeMemory() 반환 메모리 리소스를 호출

답변

0

체크 아웃 Android Runtime

. 또한

, this

+0

감사합니다. 방금 로그에서 freeMemory()를 확인했는데 이해가되지 않습니다. 로드 된 이미지마다 달라 지지만 때로는 커지고 있습니다! 첫 번째 이미지를로드하기 전에 1070032, 20 이미지로드 후 1698688입니다. 실망 스럽습니다. – Fossor

+0

그러나 이것은 사실 일 수 있습니다. 응용 프로그램이 메모리를 사용하는 유일한 응용 프로그램이 아닌가? – Fildor

+0

내 경우에는 실용적이지 않습니다. OS가 메모리에로드 된 다음 이미지로 내 앱을 종료 할 것임을 알아야합니다. – Fossor