我正在將PC遊戲移植到擁有大量圖形資產(超過250MB)的iPad上,而我大約過了一半。我現在沒有iPad,所以我只在模擬器上測試過,一切都很好。但是當我第一次在設備上運行它時,它崩潰了。 所有我從控制檯得到的是iPad崩潰和可能相關的內存問題
Program received signal: 「0」.
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib")
這裏還警告,在這我沒有在模擬器的啓動,我不知道這意味着什麼,或者如果相關:
warning: Unable to read symbols for "/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.2/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader" (file not found).
我能紋理負載時確定遊戲崩潰,大部分時間在
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);
我使用標準的紋理加載樣本,它迄今爲止工作完美。我估計,在發生崩潰時,我分配了幾十毫克的質地(我現在無法給你確切的數字)。
我不是什麼專家,但它有點似乎我用盡內存,即使我沒有得到任何內存警告(我檢查他們)。是否有可能我一次分配的內存超過了我的內存,並且在它發出內存警告之前崩潰了?我最驚訝的是它不會拋出異常或任何東西,它只是在我身上死去。即使調試器也沒有告訴我任何東西。
任何其他的想法是什麼會導致這次崩潰?
還有最後一件事,我知道這已被問過無數次,但沒有人似乎有很好的答案。無論如何,我會試着問:)我可以爲我的應用程序獲得多少MB內存?有一些保證最低或理論(但仍然可達:))最大?有什麼辦法可以確保我有足夠的內存嗎?
遊戲中有很多花哨的藝術圖形,我儘管使用了緩存,但我釋放了當前未使用的紋理,但同時還需要幾十MB的紋理。是甚至可能的嗎?專業遊戲如何處理大量數據?任何文章將不勝感激。
當我看到這些錯誤時,通常意味着堆棧溢出。如果在調試器中等待足夠長的時間,它可能會開始加載數千幀。因人而異。 – 2010-09-07 17:28:01
由於您將所有這些紋理保存在內存中,導致崩潰。你不能這樣做,因爲操作系統會用這個信號0打你的進程,這意味着你因爲分配太多內存而被殺死。 – MoDJ 2013-07-19 17:50:22