我有一个x86_64 macOS应用程序,根据Activity,它使用35到50 of的内存与英特尔MacBook Pro。当我在M1 MacBook Pro和Rosetta一起运行同一个应用程序时,它在Activity中显示了2.5到3倍的内存。
然后,我将M1中的应用程序更新为x86_64和arm64,并再次运行。在英特尔MacBook Pro中,它在活动监视器中使用40到60 40。在M1中,Xcode仍然显示内存报告和活动监视器增加了3倍。
在M1中,我从内存报告中单击了仪器中的配置文件,它显示了系统库中最大的堆栈跟踪,特别是这个:
46 AppKit 183.46 MB +NSBundle(NSNibLoading)加载NSBundle:owner:
查看图像和调用树,一直到mmap
然而,当我再次尝试在我的M1中分析应用程序时,它显示的是常规的35-50 M1内存使用情况,仅此而已。NSBundle(NSNibLoading) loadNibNamed:owner:并没有像上面那样占用所有内存。以下是一幅图片:
这个应用程序唯一的图形是一些带有一些定制绘图核心图形代码的故事板。我在大苏尔11.2号和Xcode 12.4号。
我对使用仪器内存的理解是基本的,所以我的问题是:
谢谢你的帮助!
发布于 2021-02-15 00:41:19
如果您想查看应用程序正在使用多少内存,请查看分配工具中所有堆分配类别的Persistent列。请注意,此类别不包括纹理内存。
要更容易地找到分配内存最多的代码,请单击“仪器”窗口底部的“呼叫树”按钮,然后选择“反向调用树”和“隐藏系统库”复选框。下面的教程详细介绍了如何使用仪器来测量内存使用情况:
https://stackoverflow.com/questions/66198308
复制相似问题