2011-05-13 54 views
1

嘿,即時通訊運行cocos2d,box2d和iPhone 4上的幾個粒子系統。
我已經完成了我的第一個級別,並分配了許多精靈。
我已將我的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/ – 2011-05-13 02:57:08

+0

可能是由於粒子system.can你發佈您的微粒代碼... – Anish 2011-05-13 03:13:39

回答

2

聽起來就像你資源耗盡。我會按照SB建議的方式嘗試樂器。儀器可以使用分配儀器檢查泄漏。你也可以嘗試OpenGL分析套件。

+0

是的,看起來你是對的。 我有3個內存泄漏: GeneralBlock-512 GeneralBlock-512和NSConcreteMapTable。 泄漏字節的總數永遠不會停止! 不確定如何解決這個問題,但不適合玩耍。 – Ospho 2011-05-13 03:51:15

+0

在Allocations工具中,您可以跟蹤每個分配對象的alloc/retain/release/autorelease歷史記錄。您可以查看每個事件的堆棧跟蹤。這可能導致您直接導致有問題的代碼。 – nielsbot 2011-05-13 07:57:31

0

我有同樣的問題,我無法獲得解決方案。當我卸載整個場景並重新加載時,一切都恢復正常。所以它絕對看起來是某個地方的泄漏,但即使是使用儀器,我也找不到它的來源。

總的內存使用量沒有增加,沒有泄漏報告,所以我感覺Cocos2d或Chipmunk中的某些東西增加了負載。

我正在使用隨機移動和移出屏幕的精靈,並且每次都創建並摧毀它們。難道是因爲某些東西沒有正確發佈,科科斯或花栗鼠仍在計算這些物品?

+2

確保你不會在遊戲循環中不斷重新分配CCActions。這是我的問題 – Ospho 2012-09-14 02:27:46

+0

謝謝,我在代碼中這樣做,但我認爲完全釋放該項目會釋放相關的操作。我會盡量提前採取行動,並在需要的地方使用它們。讓我們來看看。 – 2012-09-14 05:38:23

+0

嗨,奧利弗,我發現了這個問題。我試圖重複使用動作和動畫,將它們放入保留變量中,並將它們用於其他對象。根據你的建議,我通過在需要的地方創建和使用動作和動畫來記錄整個遊戲。幀率穩定在60fps,即使我幾乎同時創建10-12個新物體。因爲那些造成內存泄漏,我已經殺死了我所有的「保留」。最後,一切似乎都是完美的。再次感謝。 – 2012-09-16 11:13:37