2014-08-27 22 views
5

Geçtiğimiz birkaç gün içinde benzer gönderiler okudum, ancak bu soruna özel olarak cevap veren hiç bir şey yok. Hibrit haritanın yaklaşık 2 dakikalık saldırgan haritasının kaydırılması ve yakınlaştırılmasıyla bir OOM sorunu yaşamaya başladım. Uygulama ayrıca, ilk arızadan sonra OOM'a ulaşmak için daha az zaman harcadığı için, çökmeden sonra belleğe tutunmuş gibi görünüyor. Kodu bir MapFragment ile yalnızca bir Faaliyet için ölçeklendirdim ve yine de aynı OOM'u aldım. Sorunu denemek ve yalıtmak için DDMS ve MAT kullandım, android:largeHeap="true" ek olarak sadece OOM geciktiriyor. Ekran yönlendirme bir sorun değil çünkü Manifest'ime android:screenOrientation="portrait" ayarlıyorum. Herhangi bir yardım takdir edilecektir.MapFragment Google Maps API v2 Bellek Yetersiz Hata/Bellek Sızıntısı

Güncelleme 2014/08/25: This is supposed to be fixed back in May 2013?

Güncelleme 2014/09/06: Hala başarı, sadece iyi bir seçenek Normal yerine Hybrid kullanmaktır. GC görüntü olmadan devam edebilir gibi görünüyor.

Benzer Mesajlar:

Out of memory error when using Google Maps API

Memory leak for Android Google Maps API v2

Android Google maps API, OutOfMemoryError

MainActivity:

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 
+0

Emulator veya aygıt? – Simas

+0

@ user3249477 - Cihazda çalışıyor. GS4 ve GS5'te hem de çöküyor. – spidermonkey

+0

Oh nevermind, 'agresif haritanın kaydırma ve yakınlaştırma' ~ 2 dakika bölümünü okumadı ... – Simas

cevap

0

Arama eşleme onPause, onResume, onLowMemory karşılık gelen Parça yöntemlerinde.

+0

Eklenen yöntemler ve hala OOM deneyimi. onLowMemory yalnızca, "işleminiz bellek bittiğinde değil, tüm sistem bellek dolduğunda" çağrılır.Kullanıcı, haritayı asla terk etmediğinden, bu senaryoda onPause ve onResume çağrılmaz. – spidermonkey

0

Bir seferde birkaç saat boyunca demo modunda bir uygulamayı çalıştırmaya çalışırken bu soruna rastladım. Ne denedim farketmez, 30 dakika sonra bu kazayı okunabilir yığın raporu olmadan görebiliyordum.

Çok farklı şeyler denedim ama bu benim için çalışan tek şeydi. Bu harita hatası için bir düzeltme değil, ancak benim app çökmesini gelen tutuldu: