我的应用程序通常只占用大约40M的内存,但是当使用Core Text时,VSIZE会跳跃到~300M。如何让Core Text使用更少的内存?
P.S。:我使用了大量的核心文本对象。
P.S。 2 :我使用'top'来获取内存信息。
答案 0 :(得分:1)
首先,VSIZE并不是一个很好的指标,表明您的应用程序使用了多少“内存”。它更多地表明您正在使用多少虚拟地址空间,其中包括内存(RAM),mmap-ed文件等。特别是对于64位应用程序,VSIZE将始终大(> 1 GB)。
如果您想知道自己使用了多少物理内存,请检查RSIZE。
您是否注意到您的计划有任何异常?使用CoreText时内存使用量是否会随着时间的推移而增长?如果是这样,那么您可能会有泄漏,在这种情况下,最好的方法是使用Instruments对您的应用进行分析,看看您的代码是否泄漏。
答案 1 :(得分:1)
我发现有关CoreText的一个注意事项是,如果您创建的字体没有确切的字体名称,CoreText会将每个字体加载到映射内存中,作为搜索的一部分来查找字体(和它似乎永远不会释放那种记忆)。使用具有虚拟内存跟踪功能的工具,查看“mapped_file”部分,查看是否在那里加载了所有字体。无论如何,CoreText确实使用了相当大的内存。