2013-04-07 4 views
2

개발 및 테스트를 위해 Galaxy Nexus (i9250)를 사용하고 있습니다. 이상한 사실을 발견했습니다. 때로는 총 힙 크기가 64MB이고 할당 된 힙 크기가 약 56 ~ 60MB이고 응용 프로그램이 충돌합니다. 하지만 때로는 기억이 80MB로 빨라지고 앱이 다운되지 않는 것으로 나타났습니다.Nexus의 최대 힙 크기는 무엇입니까?

처음에는 범위 넥서스의 장치에 대한 최대 힙 크기가 64MB가 될 것이라고 생각했지만 (지금은 잘못된 것으로 알고 있습니다.) 그래서 내 질문은 장치가 사용할 수있는 최대 힙 크기입니다. 장치에 따라 가변적 인 경우 힙 크기에 따라 다릅니다. 나는 이것이 일반적인 질문이라는 것을 알았다. 아무도 나를 제대로 안내 할 수 없었습니다. 미리 감사드립니다!

참고 : 내 코드

+4

에 대한 앱의 힙

ActivityManager.getLargeMemoryClass() 사용할 수 메가 바이트의 수를 나타내는 정수를 반환? –

+5

나는 이것이 니트 피키라는 것을 알고 있지만 사람들이 구체적으로 필요로하는 것에 대해 구체적이지 않을 때 엄청나게 짜증납니다. Nexus One, Nexus S, Galaxy Nexus, Nexus 4, Nexus 7, Nexus 10이 있습니다. 'Nexus'를 사용하고 있다고 말했 으면 'Android'를 사용하고 있다고 말할 수 있습니다. 나는 이것이 7 또는 10이지만 cmon 남자라고 가정하고 있습니다 ... –

+0

http://stackoverflow.com/questions/5350465/android-heap-size-on-different-phones-devices-and-os- 버전 – dongshengcn

답변

0

LargeHeapSize = true;을 사용하지 않은 당신이 정확하게 얘기하는 어떤 장치 명확하지 않다. 또한 힙 메모리를 계산하는 방법이 명확하지 않습니다.

난 당신이 link

를 사용하여 힙 메모리 및 사용 가능한 메모리를 계산하는 것이 좋습니다 그러나 앱이 기본 메모리를 사용하는 경우, 그 link에 대한 제한들이 없습니다.

+0

넥서스 i9250 (갤럭시 넥서스)를 사용하고 있습니다. 나는 힙 크기를 계산하지 않았다. 나는 이클립스가 보여준 힙 크기에 대해 이야기하고있다. (DDMS에서 볼 수있다.) –

0

목표로 할 수있는 특정 숫자가 아닌 메모리 누수 및 메모리 할당 문제를 찾기위한 지침으로 DDMS 값만 사용합니다. 모든 Android 애플리케이션은 다양한 기기에서 실행될 예정이므로 'Galaxy Nexus'에 맞춰 앱을 조정하는 동안 오래된 기기에서 실행하고 적절하게 테스트하고 싶어 할 것입니다. @ 동성 신호에 대한 내용은 을 참조하십시오.

@minhaz의 링크 외에도 다음과 같이 읽을 수도 있습니다 : Understanding Heap Size.

안드로이드에서 메모리 관리에 대한 더 자세한 정보를 얻으려면 안드로이드 프레임 워크 엔지니어 @ hackbod의 답변 : How to Discover Memory Usage of My Application in Android을 읽어야합니다.

1

고려 할 때 앱은 무료 힙 확인하고 총 힙 메모리와 비교 등을 추가 모든 가비지 콜렉션주기 후마다 을주는 "OutOfMemoryError가"

DVM은 작은 힙을 할당하여 시작 충돌 그 차이가 너무 작은 경우의 메모리. 따라서 힙은 OS 별 Dalvik VM 요구 사항에 따라 런타임시 증가 또는 감소 할 수 있습니다.

그래서, 사용할 수있는 충분한 메모리가 시스템에 자신의 때 앱이 메모리가 80메가바이트까지 촬영 할 때 충돌되지 않았다.

예이 (가정 64메가바이트은 힙 크기의 하드 제한 없음) 하드 디스크 장치의 힙 크기는 "LargeHeapSize = true"을 사용하여 늘릴 수 있지만 모든 힙 크기는 가비지 수집 프로세스에 소요되는 시간에 직접 비례하므로 앱 성능 측면에서 너무 비쌉니다. (이제 GC는 더 큰 힙 내부에서 더 많은 객체를 트래버스해야 함). 따라서 큰 힙 크기를 위해 무엇이 왜 왜 있는지 정확히 알지 않는 한 큰 "NO, NO"입니다. 따라 어떤 요인 힙 크기

:

  • 힙 크기는 주로 더 해상도에 에 맞게 큰 이미지/비트 맵의 ​​크기를 필요로 사용 있는 장치의 해상도에 따라 달라집니다.(더 많은 픽셀 = 통합하기 위해 더 많은 메모리가 필요합니다)

  • 비록 이것에 대한 어떠한 서면 증거도 얻지 못했습니다. 내에 대한 이해 힙 크기는 또한 RAM 크기에 따라 다릅니다. 이후, 더 큰
    RAM의 크기는 사용할 수있는 힙 메모리의 정확한 금액을 알고, ActivityManager을 필요로하는 경우에

멀티 태스킹의 유연성과 을 얻기의 적은
기회를 허용 "OutOfMemoryError를"합니다 .getMemoryClass()
. 이 방법을 사용하면 뭐 그게 그렇게 많은 힙 공간을 필요로 큰 힙 크기

관련 문제