2012-11-27 4 views
4

나는이 게임을 android 용으로 제작하고 있으며 메모리 사용에 관해 몇 가지 질문이 있습니다. 우리의 무지 안에서 코딩 할 때 우리는 약 40MB 메모리를 사용하는 응용 프로그램을 가지고 있었지만 메모리가 부족한 테스트 전화 충돌 (Xperia Arc (무언가))을 만들었습니다. 그런 다음 메모리로 더 똑똑하게 코딩하고 약 20MB가되었습니다. 우리는 인터넷 검색을 많이했고 대부분의 휴대 전화가 16 메가 바이트와 다른 32 메가 바이트로 제한된다는 사람들의 의견을 보았습니다. 그러나 우리는 화가 조류와 같은 다른 응용 프로그램과도 비교했습니다.이 응용 프로그램은 약 129 개의 메모리를 사용합니다 (이 응용 프로그램으로 32 메가 바이트 이상의 충돌이 발생하는 Xperia 호에서 정상적으로 작동 함).Android Java, 허용되는 메모리 사용량이 더 많음

내 질문은 다음과 같습니다. 어떻게 든 16/32 MB보다 많은 메모리를 사용할 수 있습니까? 아니면 더 많은 방법을 사용하는 앱이 어떻게합니까?

어떤 사람들은 다른 프로세스를 사용하여 메모리를 처리하고 해당 프로세스에 대해 다른 16/32 MB를 얻을 수 있다고 말합니다. 평균적인 프로그래머라면 그렇게 할 수 있을까요?

답변

3

나는 G1이 애플 리케이션을 위해서만 16MB를 줄 것이라고 알고 있지만, 아주 오래된 것이다. 가장 인기있는 장치는 모두 32/64MB를 제공 할 수 있습니다. 메모리 양은 항상 화면 크기에 따라 다릅니다.

manifest.xml의 android:largeHeap은 원하는대로 사용할 수 있지만 사용하지는 않았습니다. 이 속성의 효과는 여러 기기마다 다릅니다.

3

Pre-Honeycomb : Angry Birds와 많은 게임이 Android NDK에서 기본 C++ 코드를 사용하여 프로그래밍 또는 메모리 할당을 수행합니다. JVM 외부에서 메모리를 할당하면 힙 한계에 포함되지 않으므로 하드웨어로만 제한됩니다. 물론 catch는 메모리 관리에 대한 전적인 책임이 있습니다.

허니 콤 이상 : faylon이 제안했듯이 android : largeHeap은 휴대 전화 제조사의 경계 아래에 있지만 힙 한도를 매우 크게 확장 할 수있는 방법입니다. "largeHeap"에 대한 해석은 32MB 대신 64MB가 될 수도 있고 이론적으로는 제공되지 않을 수도 있습니다. 따라서 메모리를 확보하려면 getLargeMemoryClass()과 함께 사용해야합니다. NDK 옵션은 계속 사용할 수 있습니다. 나처럼 빠른 답을 찾는 것입니다 누군가를 위해 응용 프로그램의 속성

android:largeHeap="true" 

같은 매니페스트에

3

넣어이

관련 문제