首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GMSMapView:如何管理内存?

GMSMapView:如何管理内存?
EN

Stack Overflow用户
提问于 2013-06-02 00:57:31
回答 4查看 10.8K关注 0票数 14

我的应用程序在子视图中使用GMSMapView,内存使用情况如下:

  • 1.25MB地图访问前;
  • 第一次地图访问后为21.5MB;
  • 放大和摇摄后30 MB (有时超过30 MB)

据我所知,仪器没有泄漏。问题是,我正在收到内存警告,并且经常关闭应用程序。显然,GoogleMaps正在使用应用程序内存的最大份额。如何在didReceiveMemoryWarning()中发布其中的一些内容?

是否有可能在一个应用程序中使用谷歌地图,并管理其内存使用,至少足以防止它导致内存关闭?

这是GoogleMaps-iOS-1.3.0。

更新:

我的记忆数字离我很远(使用分配工具而不是活动监视器)。以下是正确的值:

  • 8.8MB地图访问前
  • 第一次地图访问后的57 MB
  • 65 MB,峰值接近80 MB。缩放和摇摄后

这显然在256 MB内存设备(例如,iPod Touch 4G )的“麻烦”范围内,并解释了内存警告和偶尔的启动。

有没有人在256 MB设备上的应用程序中成功运行谷歌地图?

EN

回答 4

Stack Overflow用户

发布于 2013-11-13 09:42:15

尝试在视图控制器中使用以下代码:

代码语言:javascript
复制
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated] ;
    [m_mapView clear];
    [m_mapView stopRendering] ;
    [m_mapView removeFromSuperview] ;
    m_mapView = nil ;
}

我试过了,它确实释放了一些GMSMapView内存。

票数 11
EN

Stack Overflow用户

发布于 2013-06-04 02:34:35

maps使用大小为256×256像素的瓷砖。它们作为32位/像素纹理被加载到内存中,因此它们将使用256 x 256 x 4=256 so /瓦。

如果您有一个1024x768的iPad,那么您需要4x3= 12 tiles = 3MB。然而,这只是当您的视图恰好与瓷砖边界完美地对齐时--实际上它将跨越边界,因此您可能需要5x4= 20 tiles = 5MB。

但是,如果放大到下一个较低的缩放级别将显示的几乎点,每个瓷砖将被绘制为其全部大小的一半多一点,因此您将需要10x8= 80 tiles =20 80。

然后,如果您有一个Retina设备,它将实际加载下一个更高的缩放级别的瓷砖,因此需要在每个维度中增加两倍(以匹配屏幕的像素而不是点),因此您需要20x16= 320 tiles =80 16。

iPhone 5的类似计算结果为240瓦=60 an。

因此,如果您计算映射只需要为这些块所需的内存量,不包括用于内部处理的任何开销或其他内存,则计算出来的内存非常多。所以你可能无能为力。在内存紧张时,maps已经释放了未使用的块--但是它不能释放呈现当前视图所需的块。

这意味着您唯一的选择可能是在您自己的代码中减少内存使用。

对于我的应用程序,我不得不改变它在iPad 1上的工作方式,因为它内存不足,经常崩溃。对于其他设备,我发现它工作得很好。

一些可能的解决办法可能是缩小地图视图的大小,或者将缩放级别调整到整数值。这两种方法都不适合用户,但它们可能有助于避免崩溃。

票数 7
EN

Stack Overflow用户

发布于 2019-11-20 07:39:31

在我的例子中,我有两个mapViews在两个视图控制器背靠背,所以我弹出视图控制器和删除地图视图从超级视图。

代码语言:javascript
复制
override func onBtnBack() {
        self.navigationController?.popViewController(animated: true)
        self.mapView.removeFromSuperview()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16878781

复制
相关文章

相似问题

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