【发布时间】:2013-05-28 13:03:11
【问题描述】:
我的应用在子视图中使用了一个GMSMapView,内存使用情况如下:
- 地图访问前 1.25 MB;
- 首次访问地图后需要 21.5 MB;
- 放大和平移后需要 30 MB(有时会超过 30)
据我对 Instruments 的了解,没有泄漏。问题是,我收到内存警告,并且经常会关闭应用程序。显然,GoogleMaps 正在使用该应用程序的大部分内存。如何在 didReceiveMemoryWarning() 中释放其中的一些内容?
是否可以在应用中使用 Google 地图并管理其内存使用,至少足以防止其导致内存关闭?
这是 GoogleMaps-iOS-1.3.0。
更新:
我的记忆数字很差(使用分配工具而不是活动监视器)。以下是正确的值:
- 地图访问前 8.8 MB
- 第一次访问地图后需要 57 MB
- 65 MB,峰值接近 80 MB。缩放和平移后
这显然属于 256 MB RAM 设备(例如 iPod Touch 4G)的“故障”范围,并解释了内存警告和偶尔出现的问题。
有人在 256 MB 设备上的应用中成功运行 Google 地图吗?
【问题讨论】:
-
尝试在地图不在屏幕上时调用 stopRendering。这将释放内存资源。
-
但是当用户滚动和缩放并且警告开始出现(有时,关闭)时该怎么办?即,没有机会停止渲染。基本上,应用程序是否只需要让 GMSMap 将其驱动到内存破产? :-)
-
@user2444264 你找到任何解决方案了吗,我面临同样的问题
-
没有。 iOS 版 Google 地图存在一些突出的错误(例如,请参阅 code.google.com/p/gmaps-api-issues/issues/detail?id=5202),所以我不情愿地切换回 MapKit。
-
@user2444264 mapkit也有同样的问题