2012-02-27 2 views
3

우리는 주로 iPad 2 및 iPhone 4S를 대상으로하는 메모리 집약적 인 3D 앱을 보유하고 있지만 iPod Touch 4G 및 iPhone 3GS에서도 작동합니다. 우리는 망막 디스플레이와 결합 된 iPod Touch 4G의 메모리 공간이 작아지면서이 플랫폼이 메모리 부족 오류의 영향을 받기 쉽다는 것을 발견했습니다. iOS5는 사용 가능한 메모리를 어느 정도 낮추었습니다.iPod Touch 4G, iOS 5에서 최대 (실제) 메모리 사용

우리가 사용하는 플랫폼을 기반으로 3D 모델의 해상도를 낮추는 것은 상대적으로 쉽지만,로드하기 전에 해상도를 설정해야하므로 메모리 압력 경고를 기반으로 동적으로 효과적으로 낮출 수는 없습니다 O/S.

시행 착오를 토대로 메모리 사용을 조정했지만 장시간 (예 : 몇 달) 재부팅되지 않은 장치는 사용 된 장치보다 사용하기 쉬운 메모리가 훨씬 적습니다. 최근 재부팅했습니다. (실행중인 모든 앱을 종료하더라도)

다른 iPod API 개발자가 iPod Touch 4G 앱의 실질적인 메모리 제한으로 사용하는 것이 궁금합니다.

+0

내가 유용한 답변이 확실하지 않다 : 여기

는 링크입니다. 사용자가 앱을 사용하기 전이나 사용하는 동안 기기에서 무엇을하는지 또는 사용하는지에 따라 크게 달라집니다. 어떻게 일반화 시킬지 모르겠다. – onnoweb

+0

음, 나는 우리 앱의 충돌이 거의 발생하지 않을 것이라고 생각했습니다. 플랫폼에서 더 많은 경험을 가진 다른 앱 개발자가 "iPod touch에서 X 메그 이상을 사용하지 마십시오"라는 것을 알게되었을 것입니다. 그러나 그 대답을 찾을 수 없었습니다. (70Meg를 암시하는 한 가지 질문이 있었지만 의견 작성자가 질문에 답하면서 실제 통찰력을 제공하지 못했다고 생각합니다.) –

+0

저는이 낡은 질문을 방금 상기 시켰고, 조금 줄만한 가치가 있다고 생각했습니다. 최신 정보. 모든 경우에서 우리의 메모리 문제를 푸는 열쇠는 압축 텍스처 사용으로 전환하는 것이 었습니다. 말 그대로 아무런 단점도 없습니다. 런타임에 메모리를 적게 차지하며 훨씬 빠르게 렌더링됩니다. –

답변

3

모두가 염두에 제공하고 엄지 손가락의 개인적인 일반적인 규칙은 현명한 날씨에 다음 주위에있을 것으로 예상 할 수있다있는 모든주의 유지하면서 :

  • 512 메가 바이트 장치 -> 200메가바이트 가능 (아이폰 4-4S, 아이 패드 2)
  • 256메가바이트 장치 -> 100메가바이트 가능 (아이폰 3GS, 아이 패드, 아이팟 터치 3G-4G)
  • 128 메가 바이트 장치 -> 사용 가능한 50메가바이트 (아이폰 3G, 아이팟 터치 1G-2G)

또한 메모리 사용량에 유연하게 대응할 필요가 없어도 감수성이없는 날씨를 엄격하게 견뎌내려면 그 수를 반으로 줄이거 나 3 등분 할 수 있습니다. 그러나 조건이 무섭게 될 때 어떤 것도 던져 넣을 수 없다면 보증은 상당히 어려울 것입니다. 그 정도의 신뢰도를 위해 버려야 할 성능의 슬라이딩 스케일과 같습니다.

환경 예측 성 측면에서 iOS는 OS에 대한 드릴 상사의 추가 보너스와 함께 전용 시스템보다 PC와 훨씬 비슷합니다.

1

UI가 사용자를 대신하여 UIKit 및 OpenGL에서 수행하는 모든 외부 할당 때문에 실제 숫자를 지정하는 것은 어렵습니다. 나는 30MB 정도의 내 할당량을 유지하려고 노력하고있다. 나는 그것을 90MB 정도로 높였지만 그 레벨에서 많이 던져 버렸기 때문에 모든 메모리를 사용하는 작업이 매우 간단하지 않으면 나쁜 생각 일 수 있습니다.

현재 문제를 해킹해야하는 경우 문제가있는 장치를 먼저 감지하고 시작할 때 그래픽 엔진의 해상도를 낮출 수 있습니다. 정확한 장치 정보를 얻거나 프로세서 코어 수 및 RAM 용량과 결합 된 디스플레이 배율 (망막)을 확인하여 사용할 품질 수준을 결정할 수 있습니다.

RAM에 데이터를로드하는 대신 맵핑 된 파일을 사용하여 메모리 사용량을 줄이는 데 큰 성공을 거두었으며 큰 데이터 할당이있는 경우 시도해 볼 수 있습니다.

또한 많은 양의 메모리를 소비하고 임의의 시간대에 버려 질 수 있으므로 UIKit에서 누출 된보기/컨트롤을 조심하십시오. 여러 뷰 컨트롤러에서 자식 뷰를 유출 한 일부 코드가 있습니다. 결국 내 앱의 메모리 사용량이 문제를 직접 반영하지는 않았지만 그 누수가 내 앱을 씹을 것입니다.

관련 문제