android应用程序的内存分配问题

Sta*_*low 27 java android android-camera2

我有一个执行图像分析的Android应用程序,该应用程序通过以下方式管理IntentService- 该过程每次都需要几秒钟,并且准确,快速地工作.

但是当应用程序在应用程序中重复大约50次时(如图所示),它开始变得非常缓慢,直到应用程序和设备变得无法使用.当设备重新启动并且应用程序再次打开时,它会照常运行.

使用Android Studio进行检查我可以看到,每次运行分析时,应用程序的内存分配每次都会上升大约1MB.因此崩溃时显然内存不足.

我已经使用此标志完成分析并转到结果以尝试修复后台活动;

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Run Code Online (Sandbox Code Playgroud)

效果极小,我理解IntentService管理自己关闭.所以不知道我还能做些什么来尝试减少内存分配或者至少清除分配并停止添加它?

图像分析工作流程

更多详情:

  • 该应用程序使用基于Google Camera2的相机实现
  • 通过IntentService使用C++库完成分析

Ali*_*786 10

您似乎没有正确处理资源(变量,图像文件等),并且它在您的应用程序中创建内存泄漏.

你可以在这个博客上找到Johan撰写的关于处理你的应用程序中的内存泄漏的文章或者看到这个SO问题.

避免Android上的内存泄漏

如果在c ++库中生成内存泄漏,那么您可以轻松找到在调试模式下泄漏内存的资源.

在结果活动之后,您应该按照Grisgram的建议调用垃圾收集器并关闭所有未使用的资源.

如果你能在问题中提供堆栈跟踪会很好.