我正在尝试从ARCore相机捕获图像,但是连续执行此操作会返回异常(com.google.ar.core.exceptions.ResourceExhaustedException
),并且在JNI级别上也可以使用相同的日志
E: cpu_image_manager.cc:102 Failed to acquire new image, due to too many images acquired but not released.
E: status.cc:155 ArStatusErrorSpace::AR_ERROR_RESOURCE_EXHAUSTED:
因此,我试图找出如何释放图像,正如ARCore ref所指出的那样,使用C(Caller is responsible for later releasing the image with ArImage_release
)很容易,但是在Java中,{{ 1}}对象。是因为GC旨在释放资源本身吗?
答案 0 :(得分:2)
通过
获取了Image
对象之后
final Image image = frame.acquireCameraImage()
您可以释放内存调用:
image.close();
使用适用于Android 1.4的最新版本的ARCore SDK,因为在1.3
image.close()
had a bug之前,并且从frame.acquireCameraImage()
收到了引用