android - 机器学习套件占用太多内存 [Android]
问题描述
我正在尝试使用图像内容 [ onDevice Mode ] 来描述一些图像,但它占用了太多内存,如果我在同一个应用程序中尝试了许多图像,它就会崩溃。
我不知道为什么会发生这种情况,但它总是抛出OutOfMemoryError异常。我的图像大小约为 1-2 MB。
当我用谷歌搜索异常时,我启用了android:largeHeap="true"
但在尝试 2 张图片后仍然崩溃。
我还尝试从 vars 中释放内存,System.gc();
但仍然占用了太多内存。
这是我在设备上使用的代码:
在 onCreate();
detector = FirebaseVision.getInstance()
.getVisionLabelDetector();
单击按钮时
detector.detectInImage(image)
.addOnSuccessListener(
new OnSuccessListener<List<FirebaseVisionLabel>>() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onSuccess(List<FirebaseVisionLabel> labels) {
Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();
setResult(labels, "onDevice Result : ", before);
System.gc();
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
System.out.println("Error: " + e.getMessage());
}
});
谁能帮我?
解决方案
我的问题是图像质量太高并且没有压缩图像
图像必须在对其进行初始化处理之前进行压缩
推荐阅读
- python - 将 Kivy/Python 应用程序捆绑到一个易于安装的 mac .app 文件中
- python-3.x - FactoryBoy:如何为通用外键定义工厂字段?
- python - 使用 Python 从非常长的字符串中提取模式文本序列的实例
- java - 在 apache karaf 中部署 ibm db2 许可证文件的位置
- c - 在 C 中实现 F# List.scan?
- python - 使用 Flask-SQLAlchemy 避免重复查询
- c++ - 在 C++ 中同时(同时)运行两个函数
- python - Matrix multiplication with extra dimensions in NumPy
- c - 如何在 if else 结构中分离两个不同的兼容条件
- scala - 将 Play Silhouette 模块从 Guice 转换为 Macwire 时出错