2014-08-27 5 views
5

मैंने पिछले कुछ दिनों में कई समान पोस्ट पढ़ी हैं, लेकिन कोई भी विशेष रूप से इस समस्या का उत्तर नहीं देता है। मैं ~ 2 मिनट आक्रामक मानचित्र पैनिंग और हाइब्रिड मानचित्र के साथ ज़ूमिंग के बाद ओओएम मुद्दा प्राप्त करना शुरू कर देता हूं। ऐप भी दुर्घटना के बाद स्मृति पर पकड़ने लगता है क्योंकि पहली विफलता के बाद ओओएम तक पहुंचने में कम समय लगता है। मैंने कोड को मैपफ्रैमेंट के साथ केवल एक गतिविधि के लिए घटाया और अभी भी वही ओओएम प्राप्त किया। मैंने android:largeHeap="true" जोड़ने के अलावा, ओओएम को केवल देरी के अलावा, समस्या को आज़माने और अलग करने के लिए डीडीएमएस और मैट का उपयोग किया है। स्क्रीन री-ओरिएंटेशन कोई मुद्दा नहीं है क्योंकि मैं अपने मैनिफेस्ट में android:screenOrientation="portrait" सेट कर रहा हूं। किसी भी सहायता की सराहना की जाएगी।मैपफ्रैगमेंट Google मैप्स एपीआई v2 मेमोरी त्रुटि/मेमोरी लीक

अद्यतन 2014-08-25: This is supposed to be fixed back in May 2013?

अद्यतन 2014-09-06: फिर भी कोई सफलता, केवल अच्छा विकल्प Normal बजाय Hybrid उपयोग करने के लिए है। लगता है कि जीसी इमेजरी के बिना जारी रखने में सक्षम है।

इसी प्रकार के पोस्ट:

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

एमुलेटर या डिवाइस? – Simas

+0

@ user3249477 - डिवाइस पर चल रहा है। जीएस 4 और जीएस 5 दोनों पर दुर्घटनाएं। – spidermonkey

+0

ओह कभी नहीं, '~ 2 मिनट आक्रामक मानचित्र पैनिंग और ज़ूमिंग' भाग नहीं पढ़ा ... – Simas

उत्तर

0

संबंधित फ्रैगमेंट विधियों में पॉज़, ऑन रेस्यूम, ऑन लोममेरी पर कॉल करने का प्रयास करें।

+0

जोड़ा गया विधियां और अभी भी ओओएम का अनुभव करें। onLowMemory केवल तभी बुलाया जाता है जब "पूरी प्रणाली मेमोरी से बाहर हो रही है, न कि जब आपकी प्रक्रिया मेमोरी से बाहर हो रही है"।ऑन पॉज़ और ऑनयूज को इस परिदृश्य में नहीं कहा जाता है क्योंकि उपयोगकर्ता मानचित्र को कभी नहीं छोड़ता है। – spidermonkey

0

मैं एक समय में कुछ घंटों के लिए डेमो मोड पर ऐप चलाने की कोशिश कर रहा हूं। कोई फर्क नहीं पड़ता कि मैंने कोशिश की, 30 मिनट के बाद, मैं इस क्रैश को एक पठनीय स्टैक रिपोर्ट के बिना देखूंगा।

मैंने कई अलग-अलग चीजों की कोशिश की लेकिन यह एकमात्र चीज थी जो मेरे लिए काम करती थी। यह नक्शा बग के लिए एक फिक्स नहीं है, लेकिन यह मेरे ऐप को क्रैश होने से रोकता है:

<application 
    ... 
    android:largeHeap="true"> 
संबंधित मुद्दे