CoreText导致内存消耗巨大?
我的应用程序通常只占用约 40M 内存,但当使用 Core Text 时,VSIZE 会跃升至约 300M。如何让 Core Text 使用更少的内存?
PS:我使用了很多 Core Text 对象。
PS 2:我使用“top”来获取内存信息。
My application usually only takes up ~40M of memory but when Core Text is used VSIZE jumps up to ~300M. How can I get Core Text to use less memory?
P.S. : I use lots of Core Text objects.
P.S. 2 : I use 'top' to get memory info.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,VSIZE 并不能很好地指示您的应用程序使用了多少“内存”。它更多地指示了有多少虚拟地址空间正在使用,其中包括内存 (RAM)、mmap 文件等。特别是对于 64 位应用程序,VSIZE 将始终 较大(> 1 GB)。
如果您想知道正在使用多少物理内存,请检查 RSIZE。
您是否注意到您的程序有任何异常?使用 CoreText 时内存使用量是否会随着时间的推移而增加?如果是这样,那么您可能存在泄漏,在这种情况下,最好的方法是使用 Instruments 分析您的应用程序,以查看您的代码是否泄漏。
First, VSIZE is not really a good indicator of how much "memory" your app is using. It is more an indicator of how much of your virtual address space is in use, which includes things like memory (RAM), mmap-ed files, etc. For 64-bit apps in particular, VSIZE will always be large (> 1 GB).
If you want to know how much physical memory you're using, check RSIZE instead.
Have you noticed anything abnormal about your program? Does the memory usage grow over time when using CoreText? If so then you may have a leak, in which case the best approach would be to profile your app using Instruments to see if your code is leaking.
我发现关于 CoreText 的一个注释是,如果您创建一种没有确切字体名称的字体,CoreText 会将每种字体加载到映射内存中,作为其搜索的一部分来查找您的字体(并且它不会)似乎永远不会释放那段记忆)。使用带有虚拟内存跟踪的仪器并查看“mapped_file”部分以查看是否所有字体都已加载到此处。无论如何,CoreText 确实使用了相当大的内存。
One note about CoreText I've found is that if you create a font without an exact font name, CoreText will load every font into mapped memory as part of its search to find your font (and it doesn't seem to ever release that memory). Use Instruments with Virtual Memory tracking and look in the "mapped_file" section to see if all of the fonts are loaded there. In any case CoreText does use a fairly large amount of memory.