首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是CG光栅数据?

什么是CG光栅数据?
EN

Stack Overflow用户
提问于 2012-09-19 21:30:18
回答 6查看 10.5K关注 0票数 26

我试图在我的代码中找到另一个内存泄漏,但我似乎不知道什么是CG Raster数据。在使用启用自动快照的VM跟踪器时,CG Raster数据似乎是唯一增加的部分。在不增加拨款的情况下,这些资金也在稳步增加。

我不完全确定CG Raster数据是什么,也不知道我将如何修复它,但在这一点上,不断增长的内存占用最终会导致内存错误和崩溃,所以这是不好的!我自己进行文本呈现(使用CoreText),所以我认为这与此有关。我也在装照片吗?

下面是足迹的图片:

更新:这个问题仍然存在,但有趣的是,我可以将它与UIFoundations内部的漏洞联系起来,称为“NSConcreteGlyphGenerator”。似乎只有当我在实际绘制的boundingRectWithSize方法中的属性字符串上调用“CoreText:”方法时才会发生这种情况。具体而言,这条线是:

代码语言:javascript
复制
[displayString boundingRectWithSize:CGSizeMake( self.frame.size.width, self.frame.size.height ) options:0 context:nil];

慢慢地追踪..。

EN

回答 6

Stack Overflow用户

发布于 2012-09-29 04:41:02

我不知道“CG光栅数据”可能包含的所有内容,但我确信其中包含的一件事是.由Core Graphics分配用于存储光栅数据的内存,也称为位图。

具体来说,在我的应用程序中,我使用CGBitmapContextCreate创建了两个256x256位图上下文。我将NULL作为data参数传递,以便Core为我分配位图内存。每像素32位(4字节)的256×256位图需要256 KiB = 64页,每页4 KiB。在“仪器”中,我得到两个“CG光栅数据”块,每页65页。如果我注释掉其中一个位图上下文,我只会得到一个65页的“CG光栅数据”块。

另一方面,我的应用程序中也有一个CATiledLayerCATiledLayer为我设置了自己的图形上下文,我相信它使用窗口服务器(springboard on iOS 5,backboard on iOS 6)直接访问的共享内存创建上下文。我没有看到任何与这些图形上下文对应的“CG光栅数据”块。

票数 12
EN

Stack Overflow用户

发布于 2015-03-05 13:11:02

我也有同样的问题,CG光栅数据内存增加,只是简单地推送和弹出一个视图控制器。我花了一段时间认为这是一些绘图代码的问题。最后,我找到了一个委托,而不是弱引用正在被推送和弹出的视图控制器,所以当我弹出视图控制器时,它并没有被释放。CG Raster数据碰巧是视图控制器足迹中最大的一部分,所以我错误地将问题归咎于这个问题,因为最初没有发布视图控制器本身(因此,没有发布视图,其中有些视图具有CG Raster数据)。

简而言之:如果您看到内存泄漏了CG Raster数据,请查看可能包含视图的视图控制器,并确保它们被释放。

票数 3
EN

Stack Overflow用户

发布于 2012-09-29 03:08:22

这不是很好的答案,但只是为了让调查开始.

我认为CG光栅数据与iOS 6是新的,但在iOS 5中作为CG图像存在。我在这两个模拟器上进行了测试,在iOS 5上,没有出现CG Raster数据,但是如果您比较iOS 6和iOS 5上的总数,CG图像几乎等于CG Raster数据,而CG图像没有显示在iOS 6上。所以我很确定他们只是将CG图像重命名为CG Raster数据。

至于CG图像到底是什么,我已经想了好几个月了。我认为这只是系统处理的与视图布局相关的事情,你并不真正控制,因为我的应用程序实际上没有任何UIImages或CG图像,而且我的CG图像内存相当高,所以它可能与核心动画和视图布局有关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12503185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档