我正在基于osmdroid示例地图查看器(osmdroid-4.3)创建应用程序,并且我在osm片段中遇到了一些性能问题。 我使用解压缩的离线MapQuest磁贴。
我注意到离线模式下这种奇怪的内存消耗,请看屏幕。切换到在线模式后,内存图变平。并且关于GC的东西在离线状态下一直发送垃圾邮件。
http://i.stack.imgur.com/IowAq.jpg
此外,当我将其切换回离线时 - 在我滚动地图之前没有任何反应,并且再次出现此问题。
由于这件事,应用程序感觉很迟钝。有什么建议? osmdroid是正常的还是我做错了什么?==============编辑===============
所以我在这里做了一个简短的研究,并进行了堆转储。但不幸的是,我什么都不懂,希望有人能指导我。 MAT告诉我关于可能泄漏的事情:
怀疑#1
One instance of "org.osmdroid.views.MapView" loaded by "dalvik.system.PathClassLoader @ 0x12c7be00" occupies 9,029,024 (17.58%) bytes. The memory is accumulated in one instance of "org.osmdroid.tileprovider.LRUMapTileCache" loaded by "dalvik.system.PathClassLoader @ 0x12c7be00".
Keywords
dalvik.system.PathClassLoader @ 0x12c7be00
org.osmdroid.tileprovider.LRUMapTileCache
org.osmdroid.views.MapView
怀疑#2
One instance of "android.widget.RelativeLayout" loaded by "<system class loader>" occupies 8,859,712 (17.25%) bytes. The memory is accumulated in one instance of "org.osmdroid.tileprovider.LRUMapTileCache" loaded by "dalvik.system.PathClassLoader @ 0x12c7be00".
Keywords
android.widget.RelativeLayout
dalvik.system.PathClassLoader @ 0x12c7be00
org.osmdroid.tileprovider.LRUMapTileCache
怀疑#3
36 instances of "byte[]", loaded by "<system class loader>" occupy 9,803,328 (19.09%) bytes.
Biggest instances:
•byte[1769472] @ 0xa294f000 ................................................................................................................................................................................................................................................................... - 1,769,488 (3.45%) bytes.
Keywords
byte[]
如果需要,我可以从这个转储中提供任何其他信息...我理解的是 - LRUMapTileCache在离线模式下做无用的工作或类似的东西,但是如何解决它:/