2011-05-13 6 views
1

안녕하세요, 저는 iPhone 4에서 cocos2d, box2d 및 여러 입자 시스템을 실행 중입니다.
수많은 스프 라이트가 할당 된 첫 번째 레벨을 완료했습니다.
FPS 제한을 30fps로 설정했습니다.
게임을 처음 실행하면 단색 30fps로 잘 실행됩니다. 이것은 매끄러운 게임 플레이의 약 3-4 분 동안 계속됩니다.
그러나 잠시 후 fps가 떨어지기 시작하여 12fps 표시가 될 때까지 점차 감소합니다.cocos2d 점진적 FPS 드롭

나는 내가 버린 이전 게임에이 문제가 있음을 기억합니다.
메모리 누수로 인한 것입니까? 아마도 항목을 할당 해제하지 않았습니까?

내 (void) dealloc 메서드에서 할당 된 모든 릴리스를 입력하고 있는데, 놓친 것이 있습니까? 아니면 제가 고려하지 않은 다른 가능성이 있습니까?

감사합니다.

+0

악기를 사용해보십시오 - http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/ –

+0

입자 시스템으로 인해 발생했을 수 있습니다. 입자 코드를 게시하십시오 ... – Anish

답변

2

리소스가 부족한 것 같습니다. 나는 SB가 제안한대로 Instruments를 시도 할 것입니다. 계측기는 할당 계측기를 사용하여 누출 여부를 확인할 수 있습니다. 또한 OpenGL 프로파일 링 제품군을 사용해 볼 수도 있습니다.

+0

네, 맞습니다. 나는 3 개의 메모리 누수가있다 : GeneralBlock-512 GeneralBlock-512와 NSConcreteMapTable. 누출 바이트의 총량은 결코 끝나지 않습니다 !! 그래도 문제를 해결하는 방법을 모르는 상태에서 놀아보세요. – Ospho

+0

Allocations 도구에서 할당 된 각 객체에 대한 alloc/retain/release/autorelease 기록을 추적 할 수 있습니다. 각 이벤트에 대한 스택 추적을 볼 수 있습니다. 그러면 문제가되는 코드로 바로 이어질 수 있습니다. – nielsbot

0

나는 동일한 문제가있어 해상도를 얻을 수 없습니다. 전체 장면을 언로드하고 다시로드하면 모든 것이 정상으로 돌아옵니다. 그래서 분명히 어딘가에 누수가있는 것 같지만, 악기로도 그것의 근원을 찾을 수 없습니다.

총 메모리 사용량이 증가하지 않고 누수가보고되지 않아 Cocos2d 또는 Chipmunk에서로드가 증가한다는 느낌이 들었습니다.

나는 무작위 방식으로 화면을 들락날락하게 움직이는 스프라이트를 사용하고 있으며 매번 스프라이트를 파괴합니다. 무언가가 적절하게 출시되지 않아 코코스 (Cocos) 또는 다람쥐 (Didmunk)가 여전히 그러한 아이템으로 계산할 수 있습니까?

+2

게임 루프에서 지속적으로 CCActions를 재 할당하지 않도록하십시오. 그게 내 문제 였어 – Ospho

+0

고마워, 내가 코드 에서이 일을하고 있지만, 항목을 완전히 deallocate 관련 작업을 할당 것이라고 생각. 나는 행동을 선행으로 만들려고 노력할 것이고, 필요할 때 그들을 사용하려고 노력할 것이다. 어디 보자. –

+0

올리버, 문제를 발견했습니다. 나는 액션과 애니메이션을 보존 된 변수에 넣고 다른 객체에 사용하는 것을 재사용하려고 노력했다. 당신의 제안에 따라, 나는 그들이 필요로하는 곳에서 액션과 애니메이션을 생성하고 사용함으로써 전체 게임으로 다시 코딩했습니다. 거의 동시에 10-12 개의 새로운 물체를 만들었을 때도 프레임 속도는 안정적으로 60fps입니다. 메모리 누수를 일으키는 모든 '보유'를 죽였습니다. 마침내 모든 것이 완벽한 것 같습니다. 다시 한번 감사드립니다. –