我正在实施一个使用Google地图的应用。在调试过程中,我发现了一个有趣的错误,您可以轻松地重现(我希望)。如果您从Google测试Hello MapView示例:
http://developer.android.com/guide/tutorials/views/hello-mapview.html
错误: 如果您快速向任何方向滑动(尝试对角线方向),在一段时间内,您可能会收到以下错误:
02-28 15:59:45.138: D/dalvikvm(26484): GC_CONCURRENT freed 2K, 13% free 18870K/21639K, paused 2ms+4ms
02-28 15:59:45.911: D/dalvikvm(26484): GC_FOR_ALLOC freed 1603K, 20% free 17396K/21639K, paused 14ms
02-28 15:59:45.911: I/dalvikvm-heap(26484): Grow heap (frag case) to 18.546MB for 1560976-byte allocation
02-28 15:59:45.942: D/dalvikvm(26484): GC_CONCURRENT freed 1K, 13% free 18919K/21639K, paused 2ms+2ms
02-28 15:59:54.271: D/dalvikvm(26484): GC_CONCURRENT freed 2794K, 19% free 17649K/21639K, paused 2ms+2ms
02-28 15:59:58.497: D/dalvikvm(26484): GC_CONCURRENT freed 856K, 18% free 17880K/21639K, paused 5ms+3ms
02-28 16:00:04.341: D/dalvikvm(26484): GC_CONCURRENT freed 1003K, 17% free 18063K/21639K, paused 4ms+4ms
02-28 16:00:11.083: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
02-28 16:00:11.091: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
02-28 16:00:11.614: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
02-28 16:00:11.614: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
02-28 16:00:11.638: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
02-28 16:00:11.646: D/dalvikvm(26484): GC_CONCURRENT freed 1097K, 16% free 18222K/21639K, paused 2ms+6ms
02-28 16:00:11.646: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
02-28 16:00:11.646: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072
地图崩溃了。知道如何解决这个问题吗?
答案 0 :(得分:1)
认为谷歌地图与OutOfMemoryError崩溃我在HTC Wildfire上几次抓到它。它可以在具有小堆内存的设备上轻松复制。当您快速滑动(调整大小)时,您将超过所有堆。认为垃圾收集器在某些情况下不能如此快速地释放内存而你会遇到内存不足。
答案 1 :(得分:1)
在许多情况下,使用MapView的间歇性崩溃行为可以通过确保在应用程序清单的“application”元素中使用 largeHeap 进行指定来解决,尤其是在大屏幕设备(平板电脑)上。从API Level 11(Android 3.0)开始,此属性可用。
<强>的AndroidManifest.xml:强>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ge.android.app"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/app" android:label="@string/app_name"
android:debuggable="true"
android:theme="@style/CustomTheme"
android:largeHeap="true">
...
</application>
...
</manifest>