2009-02-11 59 views
3

因此,這裏的情況:提示減少的Core Animation內存使用

我有一個CALayer的是我的屏幕大小,我設置的內容屬性設置爲2 MB的JPEG這是大約3500×2000個像素分辨率爲240ppi。我希望在使用CALayer時會有一點點的開銷,但是我的示例應用程序(它只是完成上面的內容)顯示了約33Mb RSIZE,22Mb RPVT和30Mb RSHRD的使用情況。我注意到,在運行64位應用程序時,這些數字要比運行32位程序好得多。

我在做這個例子的真實應用程序中所能想到的一切,包括重新採樣我的CGImageRefs只是圖層的大小,但這對我來說似乎無關緊要 - 不應該是更簡單嗎?

有沒有人遇到好的方法來減少CALayers和CGImageRefs使用的內存量?

回答

4

首先,您將遇到一個普通CALayer大小的圖像問題,因爲您可能會觸及2048 x 2048(取決於您的圖形卡)的紋理大小限制。像這樣的應用程序是CATiledLayer的設計目的。比爾Dudney在他的blog(一個大的PDF),以及the code that accompanies his book有一些代碼示例。

對於我來說這麼大的圖像會花費太多內存,因爲它將作爲一個未壓縮的位圖存儲在CGImage中,這並不奇怪。除了將圖像縮放爲您需要的分辨率並使用CATiledLayer進行拼貼外,我想不出多少。一旦將它分配給CAlayer的內容,你是否發佈了CGImageRef?在那個時候你不需要堅持下去。

+0

在我的圖層的內容屬性中處理CGImageRef的唯一原因是爲了節省一些時間 - 我非常快速地從磁盤加載的交易中恢復過來,保持圖像周圍是值得的。我會嘗試發佈它,看看有什麼影響 - 謝謝! – 2009-02-12 10:18:38