iOS框架内存中占用很高的ttc文件是否正常

iOS框架内存中占用很高的ttc文件是否正常

1)iOS框架内存中占用很高的ttc文件是否正常
2)Constant Buffer在移动端的限制是多少


这是第448篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

无论是社区里开发者们的互助讨论,还是AI基于知识沉淀的快速反馈,核心都是为了让每一个技术难题都有解、每一次踩坑都有回响。本期分享分别来自UWA AI问答和UWA问答社区,希望这些从真实开发场景中提炼的经验,能直接帮你解决当下的技术卡点,也让你在遇到同类问题时,能更高效地找到破局方向。


From AI 问答

Q:用团结引擎Memory Profiler看iOS包的内存占用,这个可以定位iOS框架内存。发现里面有一个PingFang.ttc占用了74MB,不是在资源里,而是显示在iOS框架内存里面的,这个是正常的么?

A:该现象是正常的,无需过度担忧。

PingFang.ttc是苹果系统自带的苹方字体文件(TrueType Collection),属于iOS系统级资源。当应用首次使用系统默认字体(如在Text、TextMeshPro以外的UI元素中未指定字体)或系统进行文本渲染时,iOS会将该字体文件映射到应用的内存空间,因此在Memory Profiler的“iOS框架内存”或“Untracked Memory”部分中被统计为占用。

此部分内存由操作系统管理,不属于Unity托管堆或应用主动加载的Assets资源,因此不会出现在AssetBundle或资源列表中。其占用行为属于系统正常机制,且通常为共享内存(多个应用可能共用同一份字体数据的物理页),实际对整体PSS内存影响有限。

建议处理方式如下:

  • 确认是否误用系统字体:检查项目中UI文本组件(尤其是Legacy UI Text)是否未指定自定义字体而依赖系统默认字体。若需统一视觉风格或降低对系统字体的依赖,建议使用嵌入式字体(.ttf/.otf)并打包至AssetBundle。
  • 关注可优化内存区域:74MB的系统字体映射属正常范围,应优先关注Tracked Memory中的Managed Heap、Texture、Mesh等可控内存模块的优化。
  • 避免不必要的文本渲染:减少动态生成大量文本对象的行为,合理使用对象池,防止因文本频繁创建导致系统字体缓存持续增长。
  • 使用UWA GOT Online工具辅助分析:通过Resource模式下的内存自动采样,对比不同场景下PSS与Reserved Total的变化趋势,明确业务代码对内存的影响。

综上,PingFang.ttc占用74MB属于iOS系统正常行为,只要项目无异常卡顿或OOM崩溃,可视为合理内存使用。

分享链接:
https://www.uwa4d.com/main/uwa-shared.html?shareId=29e9e0df-2c32-4b2e-9317-503e5891cfd8


From 问答社区

Q:CBuffer(Constant Buffer)在移动端一般大小限制是多少?

A:普通Shader的Constant Buffer,会受到Graphics API和硬件影响,可以用SystemInfo.maxConstantBufferSize获取。

通常除了GPU Instancing时,很难达到CBuffer的上限,所以一般不太关心这个,《Rendering 19--GPU Instancing》这篇文章里面有讲GPU Instancing的数量受到CBuffer的限制。

详见:《Rendering 19--GPU Instancing》第1.4
https://catlikecoding.com/unity/tutorials/rendering/part-19/

原文如下图:

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/68d25f50682c7e5cd61bfb30

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859