簡體   English   中英

iOS紋理分配顯示了探查器中兩倍的內存使用量

[英]iOS texture allocation shows twice as much memory usage in profiler

我整個上午都在為這個而苦苦掙扎。 尚無法在設備上進行測試,我僅依靠探查器顯示的內容來大致了解是否存在重大問題。 我認為其中一個很嚴重的事實是,無論何時我在Cocos2d或自定義代碼中創建2D紋理(直接提供openGL),我都在Profiler中將所有紋理顯示為兩個分配。

例如,當我創建一個紋理512x512x4(大約1MB的數據)時,我的活動字節使用量增加了2MB,我可以在活動對象列表中看到每個兩個1Mb的大內存塊-完全與我的紋理相同。

讓我強調一下這一點-這不是我提供給glTexImage2D()的原始圖像文件,該文件已在析構函數中刪除,並且已經檢查了很多次。 同樣,我在Cocos2d示例項目中也觀察到了這個問題-簡單地將所有紋理存儲空間加倍。

下面的兩個快照-一個來自cocos2d應用程序,顯示了兩個600KB的紋理,每個紋理在Profiler中顯示為四個分配的對象: 在此處輸入圖片說明

和自定義分配和創建的紋理直接使用openGL和通過libpng提供的圖像-顯示為每個1Mb的活動兩個對象。 在此處輸入圖片說明

如果有人可以啟發我,我將不勝感激。 也許在設備上情況看起來有所不同。

問候,第。

這是cocos2d中的正常行為。 它首先將圖像文件作為UIImage加載,然后將其轉換為CCTexture2D。 這意味着在大多數情況下,內存使用量是預期的兩倍。 下一個幀應該釋放更多的內存。

您可以在我的內存優化博客文章中找到有關此行為的更多信息。 您還將了解到,使用.pvr.ccz不僅會大大減少此內存開銷,而且它們的加載速度也比PNG快得多(更不用說JPG了,它們在cocos2d中的加載速度非常慢)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM