【问题标题】:Xamarin : Out of memory issueXamarin:内存不足问题
【发布时间】:2015-04-15 15:39:03
【问题描述】:

我为 Xamarin Android 应用程序创建了一个富含 PNG 图像的 UI,大多数图像在 AXML 布局中以声明方式分配,大小范围从 5 KB 到 100 KB,不幸的是在运行应用程序并在活动之间导航之后有时应用程序崩溃并在 LogCat 中提到内存问题的消息如下

02-14 21:01:34.856:E/dalvikvm-heap(18277):4320016 字节分配内存不足。

02-14 21:01:34.876: D/skia(18277): --- 缩放位图分配失败

另外,当我使用 Xamarin Profiler 监控应用程序时,我发现内存分配图表在启动活动时上升,但在关闭活动时没有下降(尽管我使用 Finish 方法来关闭它),这意味着Activity 消耗的内存不会被释放!

知道可能是什么问题吗?

【问题讨论】:

  • 文件大小无关。我可以制作一个比 1MB 文件需要更多 RAM 的 10K 文件。位图的大小是多少?你在 onStop() 中回收位图吗?
  • 我假设 Bitmap 的大小是指 ImageView 或使用图像的 View 的大小,我使用许多图像作为背景,所以这就是所有的屏幕大小,一些背景直接使用 PNG 文件和其他人使用 xml 文件来平铺 PNG 图像。图像以声明方式分配给视图,因此我不确定如何回收它们。
  • 高效显示developer.android.com/training/displaying-bitmaps/index.html 确保您的位图符合收集条件。您可以使用弱引用更进一步。 stackoverflow.com/questions/28519203/…

标签: android memory crash xamarin


【解决方案1】:

在清单文件中添加以下行,

android:largeHeap="true"

【讨论】:

  • 那只会暂时隐藏问题
【解决方案2】:

我最近有same issue,每当有问题的活动关闭时,我通过调用GC.Collect() 解决了这个问题

【讨论】:

    【解决方案3】:

    我们遇到了完全相同的问题,我们不得不删除背景图片来解决它。我不确定为什么 Xamarin 没有收到此错误报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 2019-03-18
      • 2013-08-07
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多