如何通过USB线从相机接收大图像时防止内存不足异常?

时间:2017-03-29 08:48:50

标签: android out-of-memory usb-otg

我正在使用https://github.com/crazymaik/remoteyourcam-usb连接Cannon相机以通过OTG连接线(USB连接)接收图像。

它可以正常工作,但通常当照片拍摄速度很快或者拍摄了很多照片时,内存异常会被抛出并且应用程序崩溃:

Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 2147483659 byte allocation with 10640218 free bytes and 112MB until OOM
       at java.nio.ByteBuffer.allocate(ByteBuffer.java:56)
       at com.somepackage.ptp.PtpCamera$WorkerThread.handleCommand(PtpCamera.java:631)
       at com.somepackage.ptp.commands.RetrievePictureAction.exec(RetrievePictureAction.java:64)
       at com.somepackage.ptp.PtpCamera$WorkerThread.run(PtpCamera.java:570)

有人用过这个图书馆吗?有没有办法防止内存不足?为什么这么多字节试图分配(2147483659 - 2048MB)?

日志:

编辑:崩溃的地方:https://github.com/crazymaik/remoteyourcam-usb/blob/master/src/com/remoteyourcam/usb/ptp/PtpCamera.java#L631

0 个答案:

没有答案