Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法分配27394783字节分配,其中包含15063472个可用字节和14MB,直到OOM异常 脚本_Java_Android_Android Studio_Exception_Out Of Memory - Fatal编程技术网

Java 无法分配27394783字节分配,其中包含15063472个可用字节和14MB,直到OOM异常 脚本

Java 无法分配27394783字节分配,其中包含15063472个可用字节和14MB,直到OOM异常 脚本,java,android,android-studio,exception,out-of-memory,Java,Android,Android Studio,Exception,Out Of Memory,我正在开发android应用程序,它下载加密的视频文件,保存在内存中,然后在用户从android应用程序中单击该文件的播放按钮时解密。解密后播放视频 问题 该应用程序在大多数设备中运行良好。但在RedMiNote4中(根据我对3个不同RedMiNote4的测试),它给出了一个例外 Throwing OutOfMemoryError "Failed to allocate a 27394783 byte allocation with 15063472 free bytes and 14MB un

我正在开发android应用程序,它下载加密的视频文件,保存在内存中,然后在用户从android应用程序中单击该文件的播放按钮时解密。解密后播放视频

问题 该应用程序在大多数设备中运行良好。但在RedMiNote4中(根据我对3个不同RedMiNote4的测试),它给出了一个例外

Throwing OutOfMemoryError "Failed to allocate a 27394783 byte allocation with 15063472 free bytes and 14MB until OOM
Android Menifest.xml 内建gradle logcat 如果有人知道这个问题,请帮助我。。。
谢谢

在我的解决方案中,我通过
FileOutputStrem
(磁盘)更改
ByteArrayOutputStream
(内存)。很好用

val-fis=ByteArrayInputStream(文件数据)
val cin=CipherInputStream(fis,密码)
val fos=文件输出流(文件保存)
val b=字节数组(128)
变量numberOfBytesRead:Int
while(cin.read(b).也{numberOfBytesRead=it}>=0){
fos.写入(b,0,numberOfBytesRead)
}

在我的解决方案中,我通过
文件输出strem
(磁盘)更改
ByteArrayOutputStream
(内存)。很好用

val-fis=ByteArrayInputStream(文件数据)
val cin=CipherInputStream(fis,密码)
val fos=文件输出流(文件保存)
val b=字节数组(128)
变量numberOfBytesRead:Int
while(cin.read(b).也{numberOfBytesRead=it}>=0){
fos.写入(b,0,numberOfBytesRead)
}

好吗?它说它没有足够的内存。是的,先生,内存不足,异常@chrylis onstrike,但设备内存可用。那么为什么它会发生在3个不同的redmi note 4设备上,而不会发生在其他设备上呢@user8542111.37 GB在内部内存中是可用的@RandallArmslogcat补充道@RandallArmsJr.嗯?它说它没有足够的内存。是的,先生,内存不足,异常@chrylis onstrike,但设备内存可用。那么为什么它会发生在3个不同的redmi note 4设备上,而不会发生在其他设备上呢@user8542111.37 GB在内部内存中是可用的@RandallArmslogcat补充道@谢谢你的回答。。。但是我已经在使用
FileOutputStrem
。如果您有任何其他解决方案,请告诉我。感谢@Victorthanks的回答。。。但是我已经在使用
FileOutputStrem
。如果您有任何其他解决方案,请告诉我。谢谢@Victor
    android:name=".receiver.ConnectivityListener"
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyMaterialTheme"
    android:usesCleartextTraffic="true"
dexOptions {
    incremental true
    javaMaxHeapSize "4g"
    preDexLibraries true
    dexInProcess = true
}
2020-03-21 15:23:40.733 19593-19699/com.ehiddenbrain.prod I/art: Forcing collection of SoftReferences for 26MB allocation
2020-03-21 15:23:40.733 19593-19699/com.ehiddenbrain.prod I/art: Starting a blocking GC Alloc
2020-03-21 15:23:40.767 19593-19699/com.ehiddenbrain.prod I/art: Clamp target GC heap from 513MB to 512MB
2020-03-21 15:23:40.767 19593-19699/com.ehiddenbrain.prod I/art: Alloc concurrent mark sweep GC freed 3(72B) AllocSpace objects, 0(0B) LOS objects, 2% free, 497MB/512MB, paused 435us total 33.194ms
2020-03-21 15:23:40.767 19593-19699/com.ehiddenbrain.prod W/art: Throwing OutOfMemoryError "Failed to allocate a 27394783 byte allocation with 15063472 free bytes and 14MB until OOM"


2020-03-21 15:23:40.778 19593-19699/com.ehiddenbrain.prod E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #9
Process: com.ehiddenbrain.prod, PID: 19593
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:318)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:760)
 Caused by: java.lang.OutOfMemoryError: Failed to allocate a 27394783 byte allocation with 15063472 free bytes and 14MB until OOM
    at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:1112)
    at javax.crypto.Cipher.doFinal(Cipher.java:2056)
    at com.example.ehiddenbrain_v03.utility.Decoder.decryptVideo(Decoder.java:56)
    at com.example.ehiddenbrain_v03.background.DecoderBackgroundTask.doInBackground(DecoderBackgroundTask.java:66)
    at com.example.ehiddenbrain_v03.background.DecoderBackgroundTask.doInBackground(DecoderBackgroundTask.java:26)
    at android.os.AsyncTask$2.call(AsyncTask.java:304)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
    at java.lang.Thread.run(Thread.java:760) 
2020-03-21 15:23:40.779 19593-19699/com.ehiddenbrain.prod W/AndroidRuntime: finished raiseRlimit, rlim_cur:4096  rlim_max:4096
2020-03-21 15:23:40.945 19593-19696/com.ehiddenbrain.prod V/FA: Recording user engagement, ms: 4696
2020-03-21 15:23:40.947 19593-19696/com.ehiddenbrain.prod V/FA: Activity paused, time: 240603587