Intereting Posts
Реферат: сделайте снимок с использованием намерения камеры и отобразите фотографию с правильной ориентацией (работает, надеюсь, на все устройства) Ant не может найти javac, JAVA_HOME не будет установлен на Ubuntu Android-виджет в эмуляторе Буферизация аудиопотоков Ошибка JavaScript в JavaScript Javascript и URL-адрес Phonegap Настройка Android TimePicker в XML Как реализовать более двух уровней навигации в com.android.support :leanback-v17 Метод конечной точки Google продолжает возвращать исключение «имя не должно быть пустым» Как сохранить андроид от инвертирования изображения с фронтальной камеры? Android> Неизвестные ошибки хоста при установке плагина ADT в eclispe Как настроить пользовательское хранилище ключей для отладки в eclipse для Android Когда использовать Android Loaders Ошибка при публикации на Android-рынке Как сделать grid-view горизонтально прокручиваемым в android Как изменить «Выбрать действие» на «Завершить действие с помощью» на Android?

MapFragment API Карт Google v2 Ошибка памяти / утечка памяти

За последние несколько дней я читал несколько подобных сообщений, но никто из них специально не ответил на эту проблему. Я начинаю получать проблему с OOM после ~ 2 минут агрессивного панорамирования карты и масштабирования с помощью гибридной карты. Приложение также, похоже, удерживает память после сбоя, потому что для достижения OOM после первого отказа требуется меньше времени. Я уменьшил код до всего лишь Activity с помощью MapFragment и все еще получал тот же OOM. Я использовал DDMS и MAT, чтобы попытаться изолировать проблему, помимо добавления android:largeHeap="true" которая только задерживает OOM. Экранная переориентация не является проблемой, потому что я устанавливаю android:screenOrientation="portrait" в моем манифесте. Любая помощь будет оценена по достоинству.

Обновление 2014-08-25: Предполагается, что это будет исправлено еще в мае 2013 года?

Обновление 2014-09-06: По-прежнему нет успеха, единственный хороший вариант – использовать Normal вместо Hybrid . Кажется, что GC может не отставать от изображений.

Похожие сообщения:

Ошибка в памяти при использовании API Карт Google

Утечка памяти для Android API Google Maps v2

API Google Maps API, OutOfMemoryError

Основная деятельность:

 public class MainActivity_blank extends Activity { GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main_activity_blank); setContentView(R.layout.map_fragment); setUpMapIfNeeded(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main_activity_blank, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (mMap == null) { mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { // The Map is verified. It is now safe to manipulate the map. //startUsingMap(); mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); } } } } 

LogCat:

 08-26 17:15:29.302: I/dalvikvm-heap(19642): Forcing collection of SoftReferences for 67108880-byte allocation 08-26 17:15:29.372: D/dalvikvm(19642): GC_BEFORE_OOM freed 822K, 65% free 37523K/106080K, paused 78ms, total 78ms 08-26 17:15:30.582: W/dalvikvm(19642): chunk is too big to transmit (length=49579336, 48435 bytes) 08-26 17:15:31.532: E/dalvikvm-heap(19642): Out of memory on a 67108880-byte allocation. 08-26 17:15:31.532: I/dalvikvm(19642): "GLThread 14876" prio=5 tid=19 RUNNABLE 08-26 17:15:31.532: I/dalvikvm(19642): | group="main" sCount=0 dsCount=0 obj=0x42c120d8 self=0x787e8438 08-26 17:15:31.532: I/dalvikvm(19642): | sysTid=19729 nice=1 sched=0/0 cgrp=apps handle=2021558416 08-26 17:15:31.532: I/dalvikvm(19642): | state=R schedstat=( 51120733635 13119596807 80537 ) utm=1904 stm=3208 core=0 08-26 17:15:31.532: I/dalvikvm(19642): at android.graphics.Bitmap.nativeCreate(Native Method) 08-26 17:15:31.532: I/dalvikvm(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:924) 08-26 17:15:31.532: I/dalvikvm(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:901) 08-26 17:15:31.532: I/dalvikvm(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:868) 08-26 17:15:31.532: I/dalvikvm(19642): at opl.a((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at okg.a((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at opy.a((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at opx.a((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at ojx.a((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at ojx.b((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at otq.k((null):-1) 08-26 17:15:31.532: I/dalvikvm(19642): at otq.run((null):-1) 08-26 17:15:31.542: W/System.err(19642): OutOfMemory 08-26 17:15:31.642: D/dalvikvm(19642): GC_EXPLICIT freed 4803K, 64% free 38238K/106080K, paused 6ms+11ms, total 102ms 08-26 17:15:32.822: W/dalvikvm(19642): chunk is too big to transmit (length=49444016, 48303 bytes) 08-26 17:15:33.682: D/dalvikvm(19642): GC_FOR_ALLOC freed 3728K, 66% free 36916K/106080K, paused 65ms, total 65ms 08-26 17:15:34.752: W/dalvikvm(19642): chunk is too big to transmit (length=49398928, 48259 bytes) 08-26 17:15:35.462: I/dalvikvm-heap(19642): Forcing collection of SoftReferences for 67108880-byte allocation 08-26 17:15:35.512: D/dalvikvm(19642): GC_BEFORE_OOM freed 413K, 66% free 36502K/106080K, paused 52ms, total 52ms 08-26 17:15:36.742: W/dalvikvm(19642): chunk is too big to transmit (length=49398928, 48259 bytes) 08-26 17:15:37.282: E/dalvikvm-heap(19642): Out of memory on a 67108880-byte allocation. 08-26 17:15:37.282: I/dalvikvm(19642): "GLThread 14876" prio=5 tid=19 RUNNABLE 08-26 17:15:37.282: I/dalvikvm(19642): | group="main" sCount=0 dsCount=0 obj=0x42c120d8 self=0x787e8438 08-26 17:15:37.282: I/dalvikvm(19642): | sysTid=19729 nice=1 sched=0/0 cgrp=apps handle=2021558416 08-26 17:15:37.282: I/dalvikvm(19642): | state=R schedstat=( 54770836691 14106993077 84458 ) utm=1996 stm=3481 core=0 08-26 17:15:37.282: I/dalvikvm(19642): at android.graphics.Bitmap.nativeCreate(Native Method) 08-26 17:15:37.282: I/dalvikvm(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:924) 08-26 17:15:37.282: I/dalvikvm(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:901) 08-26 17:15:37.282: I/dalvikvm(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:868) 08-26 17:15:37.282: I/dalvikvm(19642): at opl.a((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at okg.a((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at opy.a((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at opx.a((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at ojx.a((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at ojx.b((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at otq.k((null):-1) 08-26 17:15:37.282: I/dalvikvm(19642): at otq.run((null):-1) 08-26 17:15:37.432: W/dalvikvm(19642): threadid=19: thread exiting with uncaught exception (group=0x4178cda0) 08-26 17:15:37.442: E/AndroidRuntime(19642): FATAL EXCEPTION: GLThread 14876 08-26 17:15:37.442: E/AndroidRuntime(19642): Process: com.example.maptest, PID: 19642 08-26 17:15:37.442: E/AndroidRuntime(19642): java.lang.OutOfMemoryError 08-26 17:15:37.442: E/AndroidRuntime(19642): at android.graphics.Bitmap.nativeCreate(Native Method) 08-26 17:15:37.442: E/AndroidRuntime(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:924) 08-26 17:15:37.442: E/AndroidRuntime(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:901) 08-26 17:15:37.442: E/AndroidRuntime(19642): at android.graphics.Bitmap.createBitmap(Bitmap.java:868) 08-26 17:15:37.442: E/AndroidRuntime(19642): at opl.a(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at okg.a(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at opy.a(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at opx.a(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at ojx.a(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at ojx.b(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at otq.k(Unknown Source) 08-26 17:15:37.442: E/AndroidRuntime(19642): at otq.run(Unknown Source) 08-26 17:15:37.522: D/AbsListView(19642): unregisterIRListener() is called 08-26 17:15:38.092: D/AbsListView(19642): onDetachedFromWindow 08-26 17:15:38.092: D/AbsListView(19642): unregisterIRListener() is called 08-26 17:15:38.102: D/AbsListView(19642): onVisibilityChanged() is called, visibility : 8 08-26 17:15:38.102: D/AbsListView(19642): unregisterIRListener() is called 

Попробуйте называть карту onPause, onResume, onLowMemory в соответствующих методах фрагмента.

Я столкнулся с этой проблемой, пытаясь запустить приложение в демонстрационном режиме в течение нескольких часов за раз. Независимо от того, что я пробовал, через 30 минут я увижу этот сбой без отчетного отчета о стеке.

Я пробовал много разных вещей, но это было единственное, что сработало для меня. Это не ошибка для ошибки карты, но она не позволяет моему приложению сбой:

  <application ... android:largeHeap="true">