最近做一个项目,用的是Android2.2系统,运行都正常。但是在2.3.3的机器里运行,确出现了以下OOM异常:真是很无奈,Android允许每个应用程序使用最大内存为16M,图片不超过8M。但是我用heap工具查看了内存使用量,内存总使用量才2.5M
。以下是异常的情况:11-02 18:07:30.164: ERROR/Web Console(5673): Uncaught TypeError: Cannot read property 'style' of null at http://192.168.2.102:8080/lifeweeker/ip/js/mobile.js:259
11-02 18:07:34.566: ERROR/dalvikvm-heap(5673): 2457600-byte external allocation too large for this process.
11-02 18:07:34.593: ERROR/GraphicsJNI(5673): VM won't let us allocate 2457600 bytes
11-02 18:07:34.609: ERROR/AndroidRuntime(5673): FATAL EXCEPTION: main
11-02 18:07:34.609: ERROR/AndroidRuntime(5673): java.lang.RuntimeException: Unable to start activity ComponentInfo{app.lifeweeker/app.lifeweeker.PlaygroundActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1487)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.widget.TabHost.setCurrentTab(TabHost.java:326)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.View.performClick(View.java:2485
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.os.Handler.handleCallback(Handler.java:587)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.os.Looper.loop(Looper.java:130)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.ActivityThread.main(ActivityThread.java:3683)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at java.lang.reflect.Method.invokeNative(Native Method)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at java.lang.reflect.Method.invoke(Method.java:507)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at dalvik.system.NativeStart.main(Native Method)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.LayoutInflater.createView(LayoutInflater.java:518)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.Activity.setContentView(Activity.java:1657)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at app.lifeweeker.PlaygroundActivity.onCreate(PlaygroundActivity.java:18)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     ... 18 more
11-02 18:07:34.609: ERROR/AndroidRuntime(5673): Caused by: java.lang.reflect.InvocationTargetException
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at java.lang.reflect.Constructor.constructNative(Native Method)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.LayoutInflater.createView(LayoutInflater.java:505)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     ... 28 more
11-02 18:07:34.609: ERROR/AndroidRuntime(5673): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.content.res.Resources.loadDrawable(Resources.java:1709)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.View.<init>(View.java:1951)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.View.<init>(View.java:1899)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.view.ViewGroup.<init>(ViewGroup.java:286)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     at android.widget.LinearLayout.<init>(LinearLayout.java:120)
11-02 18:07:34.609: ERROR/AndroidRuntime(5673):     ... 31 more 
日志有些乱,见谅了啊~

解决方案 »

  1.   

    bitmapFactory单个 加载的图片如果 超过1M(大概不是准确数字)就会罢工 
      

  2.   

    刚开始我也这么认为,但是我程序中的图片都不是特别大,后来解决了,是Activity太多了,每次我用StartActivity时跳到另外一个Activity,我加上了一个finish(),结束之前的Activity的生命周期,这样就行了。同样谢谢了~
      

  3.   

     11-02 18:07:30.164: ERROR/Web Console(5673): Uncaught TypeError: Cannot read property 'style' of null at http://192.168.2.102:8080/lifeweeker/ip/js/mobile.js:259请问你这个错误是怎么解决的,我遇到的是这个错误,js部分内容无法读取