2

我正在 AppleTV 上进行开发,并且我有一个下载海报的线程。

在我的第一个版本中,我使用 [NSData dataWithContentsOfURL:...] 来执行此操作,尽管没有内存泄漏,但系统内存很快就会耗尽。

然后我转向 coneybeare 在这篇memory-leak-problem-using-nsdata-in-iphone 中推荐的 ASIHTTPRequest

事情变得更好,但仍然没有记忆。

奇怪的是,我的进程的常驻内存非常低且稳定,但系统的可用内存却越来越少。

这是 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)

这两个输出随后在很短的时间内得到。请注意“Pages active:”,大约有 18k 个页面消失了。他们去哪儿了?

PS。我在CoreGraphics和VideoToolBox中也发现了类似的问题,就是系统好像会占用很多内存,不释放。CoreAnimation 和 VideoToolBox 有缓存吗?如果是,我该如何清除这些缓存?

一些更新: 1)它似乎与 BRMarqueeTextControl 相关,我认为它是基于 CoreAnimation 的文本控件。

2)单独使用BRMarqueeTextControl不会导致内存问题,单独使用海报下载作业也不会。

3)当这两者结合在一起时,内存很快就会耗尽。

4

0 回答 0