【问题标题】:Google Map Memory Issue谷歌地图内存问题
【发布时间】:2018-09-06 04:46:20
【问题描述】:

我正在做一个项目,我需要 ViewController 来显示 Google Map 以指示属性的位置以及许多其他对象(如表格视图和集合视图)以在同一视图控制器上显示 JSON 数据。

问题:这个 ViewController 占用了大约 72 MB 的内存,当我调试代码以检查它占用大量内存的原因时,我观察到谷歌地图就是原因。如果我删除了谷歌地图,那么它只占用了 15 MB 的空间,但是,我创建了其他视图控制器,其中我只使用了 UIView 并给它输入 GMSMapView 类型,当我运行代码时它占用了接近 70 MB 的内存。

这是谷歌地图的正常行为吗?因为我还没有编写任何代码,只是将 GMSMapView 类型分配给 UIView 并且占用了大量内存。

我需要一个解决方案来减少这个内存问题。任何人都可以建议我们如何在谷歌地图的情况下做到这一点?

请注意:我没有为 Google MapView 编写任何代码,只是将 GMSMapView 类型分配给 UIView 并且内存跳转到接近 70 MB 及以上。

【问题讨论】:

  • 让谷歌地图出口变弱
  • @SarabjitSingh 它已经很弱了。
  • “刚刚将 GMSMapView 类型分配给 UIView 并且内存跳转到接近 70 MB 及以上” - 无法确认您对此的体验,请尝试查找您可能在哪里实例化它。我有几个视图和 xib 这样做,在实例化之前不会影响内存。但是,一旦实例化 1,内存影响大约为 50MB,其中 20MB 永远不会消失,即使所有 GMSMapViews 都已解除分配。这些 20MB 是“缓存/内部”的东西,Google SDK 只是为了“以防万一”而保存在内存中。已作为错误报告给 Google iOS Map SDK 问题跟踪器。您可以为我的问题加注星标,以将其优先级提高到 Google :)。

标签: swift google-maps memory google-maps-sdk-ios gmsmapview


【解决方案1】:

我在我的应用程序(在线出租车应用程序)中使用了它,我认为这很正常,但是为了减少内存使用量,您可以在 viewController didDisappear 时删除 GMSMapView

override func viewDidDisappear(_ animated: Bool) {
        mapView.clear()
        mapView.removeFromSuperview()
        mapView = nil
       }

这会导致您的应用使用更少的内存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2011-10-26
    • 2012-03-15
    • 2014-04-05
    • 1970-01-01
    • 2011-12-26
    • 2011-04-26
    相关资源
    最近更新 更多