gpt4 book ai didi

java - 在 Android 上解压 RAR 文件时出现 OutOfMemoryError

转载 作者:行者123 更新时间:2023-12-01 04:56:09 25 4
gpt4 key购买 nike

我尝试这样做:Decompress Rar file in Android

但是我的一个rar文件无法解压。

日志:

01-01 17:41:32.121: E/AndroidRuntime(12799): FATAL EXCEPTION: Thread-771
01-01 17:41:32.121: E/AndroidRuntime(12799): java.lang.OutOfMemoryError
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.unpack.ppm.SubAllocator.startSubAllocator(SubAllocator.java:146)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.unpack.ppm.ModelPPM.decodeInit(ModelPPM.java:216)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.unpack.Unpack.readTables(Unpack.java:656)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.unpack.Unpack.unpack29(Unpack.java:165)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.unpack.Unpack.doUnpack(Unpack.java:120)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.Archive.doExtractFile(Archive.java:500)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.Archive.extractFile(Archive.java:442)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.testutil.ExtractArchive.extractArchive(ExtractArchive.java:73)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.github.junrar.testutil.ExtractArchive.extractArchive(ExtractArchive.java:29)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.letusread.util.DeCompressUtil.deCompress(DeCompressUtil.java:140)
01-01 17:41:32.121: E/AndroidRuntime(12799): at com.letusread.activity.FileListActivity$7.run(FileListActivity.java:338)
01-01 17:41:32.121: E/AndroidRuntime(12799): at java.lang.Thread.run(Thread.java:856)
01-01 17:41:32.324: E/MobclickAgent(12799): onEndSession called before onStartSession

我的文件已解压缩,但我的应用程序崩溃了!其他文件可以正常解压;你能帮我解决这个错误吗?

最佳答案

问题似乎出在为提取文件分配堆内存时。可以看到文件SubAllocator.java第146行出现OutOfMemoryError 。这一行是初始化的字节数组:

heap = new byte[realAllocSize];

显然变量realAllocSize大于堆上可用的空闲内存(以字节为单位)。在 Android 设备上,每个 VM 的堆大小通常为 32 或 64 MB(每个 Activity 都有自己的 VM)。问题似乎出在 junrar 库中,该库未针对 Android 设备上的使用进行优化,并且会消耗大量内存。

关于java - 在 Android 上解压 RAR 文件时出现 OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14109455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com