java中一个致命的异常,全世界求救!!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中一个致命的异常,全世界求救!!!!相关的知识,希望对你有一定的参考价值。

Exception in thread "Image Fetcher 2" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferByte.<init>(Unknown Source)
at java.awt.image.Raster.createInterleavedRaster(Unknown Source)
at java.awt.image.Raster.createInterleavedRaster(Unknown Source)
at java.awt.image.IndexColorModel.createCompatibleWritableRaster(Unknown Source)
at sun.awt.image.ImageRepresentation.createBufferedImage(Unknown Source)
at sun.awt.image.ImageRepresentation.setPixels(Unknown Source)
at sun.awt.image.ImageDecoder.setPixels(Unknown Source)
at sun.awt.image.GifImageDecoder.sendPixels(Unknown Source)
at sun.awt.image.GifImageDecoder.parseImage(Native Method)
at sun.awt.image.GifImageDecoder.readImage(Unknown Source)
at sun.awt.image.GifImageDecoder.produceImage(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
内存溢出?我电脑的内存明明才占了一点,为什么会出现这样的异常的,我的程序有很多的界面,每个界面都用label放一张图片作背景,并且有背景音乐,每当进入第三个界面时都会现这样异常,无论按怎么样的顺序都会出现
,我程序马上就要结束了,请高手们帮帮我!!!!

这是java虚拟机内存不足。多分点给虚拟机,例如用
java -Xmx512m main_class_name
来运行就给了虚拟机512M内存。自己设一个合适的值吧。
参考技术A java虚拟机内存不足。。使用 java -Xmx512m main_class_name 修改下吧。。。 参考技术B Heap size值,jvm可调配的内存空间太小,设置大一点。自己google一下。。 参考技术C 而且发生在堆内存 参考技术D java 虚拟机的内存调大一点 第5个回答  2008-08-18 你要修改JVM虚拟机的默认内存 格式: java -Xmx512m main_class_name

致命异常:java.lang.RuntimeException:系统失败

【中文标题】致命异常:java.lang.RuntimeException:系统失败【英文标题】:Fatal Exception: java.lang.RuntimeException: Failure from system 【发布时间】:2017-06-08 20:32:36 【问题描述】:

我在 crashlytics 报告中经常收到此异常,不知道为什么?

 Fatal Exception: java.lang.RuntimeException: Failure from system
   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1547)
   at android.app.Activity.startActivityForResult(Activity.java:4283)
   at android.app.Activity.startActivityForResult(Activity.java:4230)
   at android.support.v4.app.FragmentActivity.startActivityForResult(Unknown Source)
   at android.app.Activity.startActivity(Activity.java:4567)
   at android.app.Activity.startActivity(Activity.java:4535)
   at com.app.Register.MainActivity.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5702)
   at android.widget.TextView.performClick(TextView.java:10887)
   at android.view.View$PerformClick.run(View.java:22533)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:158)
   at android.app.ActivityThread.main(ActivityThread.java:7224)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by android.os.TransactionTooLargeException: data parcel size 8177736 bytes
   at android.os.BinderProxy.transactNative(Binder.java)
   at android.os.BinderProxy.transact(Binder.java:503)
   at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3130)
   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1540)
   at android.app.Activity.startActivityForResult(Activity.java:4283)
   at android.app.Activity.startActivityForResult(Activity.java:4230)
   at android.support.v4.app.FragmentActivity.startActivityForResult(Unknown Source)
   at android.app.Activity.startActivity(Activity.java:4567)
   at android.app.Activity.startActivity(Activity.java:4535)
   at ca.dailydelivery.driver.Register.AdditionalInfoActivity.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5702)
   at android.widget.TextView.performClick(TextView.java:10887)
   at android.view.View$PerformClick.run(View.java:22533)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:158)
   at android.app.ActivityThread.main(ActivityThread.java:7224)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

我在这个产生崩溃的活动中做的是传递 Intent 以从相机或图库中捕获图像。

代码:

 private void captureImage() 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    // start the image capture Intent
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);


private void openGallery() 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
    photoPickerIntent.setType("image/*");
    startActivityForResult(photoPickerIntent, IMAGE_PICK_GALLERY);

请建议如何解决此问题。谢谢

【问题讨论】:

你想做什么? @ShaartiKAKA 为什么会出现问题以及如何解决问题 用大图测试 :) 手机的操作系统版本是多少?如果是牛轧糖,这可能会有所帮助 - [***.com/questions/39098590/… 你想要实现你提供的代码还不足以得到你在做什么 //// 【参考方案1】:

减少您从相机拍摄的图像大小,然后发送到其他活动。因为当我们传递值时,它对交易有一些限制。

Binder 事务缓冲区有一个有限的固定大小,目前为 1Mb,由进程正在进行的所有事务共享。因此,当有许多事务正在进行时,即使大多数单个事务的大小适中,也可能会引发此异常。

更多详情TransactionTooLargeException

【讨论】:

【参考方案2】:

在远程过程调用期间,调用的参数和返回值作为 Parcel 对象传输,存储在 Binder 事务缓冲区中。如果参数或返回值太大而无法放入事务缓冲区,则调用将失败并抛出TransactionTooLargeException

避免TransactionTooLargeException 的关键是保持所有事务相对较小。尽量减少为远程过程调用的参数和返回值创建Parcel 所需的内存量。避免传输大量字符串或大型位图。如果可能,请尝试将大请求分解为更小的部分。

Reference

【讨论】:

【参考方案3】:

创建一个公共类并将位图传递给它,然后在第二个活动中从该公共类中获取位图值。

import android.graphics.Bitmap;

public class BitmapTransfer 
    public static Bitmap bitmap = null;

【讨论】:

以上是关于java中一个致命的异常,全世界求救!!!!的主要内容,如果未能解决你的问题,请参考以下文章

《我的世界》游戏组件冲突或游戏路径配置异常,导致无法启动游戏怎么办?

致命驾驶,还是自动驾驶?

java.lang.NullPointerException,列表视图中的致命异常

在事件驱动的世界中处理异常

编写高质量代码:改善Java程序的151个建议(第8章:异常___建议110~113)

致命异常:java.lang.RuntimeException:系统失败