अब सप्ताह के लिए एक Android एप्लिकेशन का विकास और मैं सिर्फ महसूस किया कि मैं catlog में इस तरह के संदेश मिल गया:जिट: 512 से 1024 तक जिटटेबल का आकार बदलना और इसी तरह .... यह क्या है?
Jit: Resizing JitTable from 512 to 1024
(...)
Jit: Resizing JitTable from 1024 to 2048
(...)
Jit: Resizing JitTable from 2048 to 4096
इसका क्या मतलब है? क्या यह एक स्मृति रिसाव है या ऐसा कुछ है?
और मैं भी (...) क्षेत्र में यह मिल गया: 14% मुक्त पर
04-24 07:59:53.131: D/dalvikvm(874): GC_EXTERNAL_ALLOC freed 207K, 48% free 2980K/5639K, external 1448K/1458K, paused 66ms
04-24 07:59:57.591: D/dalvikvm(874): GC_CONCURRENT freed 162K, 46% free 3122K/5767K, external 1371K/1673K, paused 11ms+17ms
04-24 07:59:58.771: D/dalvikvm(874): GC_CONCURRENT freed 196K, 44% free 3445K/6087K, external 1145K/1657K, paused 10ms+6ms
04-24 08:00:01.411: D/dalvikvm(874): GC_CONCURRENT freed 274K, 39% free 4267K/6983K, external 1145K/1657K, paused 6ms+7ms
04-24 08:00:04.970: D/dalvikvm(874): GC_EXTERNAL_ALLOC freed 31K, 36% free 4479K/6983K, external 1145K/1657K, paused 89ms
लगभग, मैं एक दुर्घटना मिला है।
ऐसा होता है जब मैं मेनू बटन (गतिविधियों को बदलना) पर क्लिक करता हूं। मैं एमुलेटर में परीक्षण, पता फोन में परिणाम न ...
logcat में दुर्घटना में त्रुटि:
04-24 08:26:34.158: E/GraphicsJNI(482): VM won't let us allocate 1536000 bytes
04-24 08:26:34.158: D/dalvikvm(482): GC_FOR_MALLOC freed 0K, 64% free 4280K/11655K, external 11662K/13614K, paused 72ms
04-24 08:26:34.158: D/skia(482): --- decoder->decode returned false
04-24 08:26:34.168: D/AndroidRuntime(482): Shutting down VM
04-24 08:26:34.168: W/dalvikvm(482): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-24 08:26:34.218: E/AndroidRuntime(482): FATAL EXCEPTION: main
04-24 08:34:37.807: E/AndroidRuntime(522): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
04-24 08:26:34.218: E/AndroidRuntime(482): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.KeySoft.OpenGuide/com.KeySoft.OpenGuide.Favourites}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
04-24 08:34:37.807: E/AndroidRuntime(522): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:470)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:284)
04-24 08:34:37.807: E/AndroidRuntime(522): at com.KeySoft.OpenGuide.Top20.readBitmapImage(Top20.java:483)
04-24 08:34:37.807: E/AndroidRuntime(522): at com.KeySoft.OpenGuide.Top20.addShopToList(Top20.java:251)
04-24 08:34:37.807: E/AndroidRuntime(522): at com.KeySoft.OpenGuide.Top20.SqlShopsVissza(Top20.java:439)
04-24 08:34:37.807: E/AndroidRuntime(522): at com.KeySoft.OpenGuide.Top20.onCreate(Top20.java:182)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.os.Looper.loop(Looper.java:130)
04-24 08:34:37.807: E/AndroidRuntime(522): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-24 08:34:37.807: E/AndroidRuntime(522): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 08:34:37.807: E/AndroidRuntime(522): at java.lang.reflect.Method.invoke(Method.java:507)
04-24 08:34:37.807: E/AndroidRuntime(522): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-24 08:34:37.807: E/AndroidRuntime(522): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-24 08:34:37.807: E/AndroidRuntime(522): at dalvik.system.NativeStart.main(Native Method)
मैं एमुलेटर पर 256 एमबी रैम का उपयोग ... शायद मैं इस सब से बच सकते हैं वास्तविक उपकरणों के साथ? सस्ते उपकरणों भी कम से कम 384 एमबी रैम (गैलेक्सी मिनी), लेकिन है oftem अधिक ...
से अधिक ऑब्जेक्ट आकार आवंटित करते हैं जो आपको बताता है कि आप स्मृति का उपयोग कर रहे हैं। यदि आपका ऐप आपको मिलने वाले त्रुटि संदेश को क्रैश करता है। वे सिर्फ कचरा संग्रह और जस्ट-इन-टाइम कंपाइलर के बारे में जानकारी हैं। यह संभावना है कि आप बहुत अधिक स्मृति का उपयोग करें या यद्यपि एक रिसाव है। – zapl
मेरा प्रश्न संपादित –
मुझे लगता है कि आप बड़ी छवियों का उपयोग कर रहे हैं। कहीं लाइन 2 पर लेआउट xml फ़ाइल से संबंधित है। चूंकि स्मृति प्रति ऐप सीमित है (16 एमबी की तरह sth) जब आप छवियों का उपयोग करते हैं तो आपको बहुत रूढ़िवादी होना पड़ता है। एक 1 मेगापिक्सेल (1000x1000) छवि के लिए पहले से ही 4 मेगाबाइट रैम की आवश्यकता है। – zapl