我正在SupportMapFragmet
上阅读this documentation,并说:
从 GoogleMap 获得的任何对象都与视图相关联。重要的是不要在视图的生命之外保持对象(例如 Marker )。否则会导致内存泄漏,因为视图无法释放。
我对此有点困惑,因为没有办法修改Markers
,除非你持有它们的引用,就像这里的许多问题所说的那样(如this和{{3 }})那么有什么我想念的吗?
我目前正在使用HashMap
将我的Markers
与其他Objects
相关联,我看不出如何避免它。这会泄漏记忆吗?是否有推荐的方法来编辑Marker
并避免内存泄漏?
答案 0 :(得分:2)
标记很可能具有对地图的引用,同样,drawable持有对它们所绑定的视图的内部引用。只要你拿着标记,你可能也会在地图上代替一个参考。
我不知道为什么他们不会使用弱引用。但是,如果他们这样做,他们就不会觉得有必要警告你不要因为抓住标记而泄漏。因此,如果您的hashmap比托管地图的片段/活动更长,则可能是内存泄漏。
答案 1 :(得分:1)
在片段被破坏之后遵循上述建议并从地图中删除所有标记后,我仍然遇到内存泄漏。对于我来说,解决方案最终是在片段被销毁之前在我的自定义TileOverlay上调用clearTileCache
。