我正在AppleTV上进行开发,我有一个下载海报的帖子。
在我的第一个版本中,我使用[NSData dataWithContentsOfURL:...]来执行此操作,并且系统内存很快就会耗尽,尽管没有内存泄漏。
然后我转到coneybeare推荐的ASIHTTPRequest memory-leak-problem-using-nsdata-in-iphone
事情变得更好,但仍然没有记忆。奇怪的是,我的进程的驻留内存非常低且稳定,但系统的可用内存越来越少。
这是vm_stat的输出:
Apple TV:/var/log root# vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 1012.
Pages active: 22735.
Pages inactive: 11178.
Pages wired down: 16069.
"Translation faults": 600863.
Pages copy-on-write: 21787.
Pages zero filled: 559108.
Pages reactivated: 2922.
Pageins: 15073.
Pageouts: 11.
Object cache: 4 hits of 7781 lookups (0% hit rate)
Apple TV:/var/log root# vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 973.
Pages active: 4568.
Pages inactive: 11067.
Pages wired down: 16076.
"Translation faults": 602533.
Pages copy-on-write: 21881.
Pages zero filled: 559767.
Pages reactivated: 3529.
Pageins: 15087.
Pageouts: 11.
Object cache: 4 hits of 7784 lookups (0% hit rate)
这两个输出随后在很短的时间内得到。 请注意“活动页面:”,大约18k页已经消失。 他们去哪儿了?
PS。我在CoreGraphics和VideoToolBox中也发现了类似的问题,也就是说,系统似乎会占用大量内存并且不会释放它们。是否有CoreAnimation和VideoToolBox的缓存?如果是,我该如何清除这些缓存?
一些更新: 1)它似乎与BRMarqueeTextControl有关,我认为这是一个基于CoreAnimation的文本控件。
2)单独使用BRMarqueeTextControl不会导致内存问题,单独的海报下载工作也不会。
3)当这两者结合在一起时,记忆很快就会消耗殆尽。