【问题标题】:Memory Allocation in GPU through Renderscript通过 Renderscript 在 GPU 中分配内存
【发布时间】:2014-08-07 07:57:14
【问题描述】:

我正在通过 Android 上的 Renderscript 制作 3 种模糊位图。应用程序多次使用后,它会自动关闭。日志如下:

V/RenderScript(4548):用户支持的分配未能满足步幅要求,退回到单独分配
D/dalvikvm(4548):GC_EXPLICIT释放1K,5%释放21256K/22352K,暂停1ms+4ms,共20ms

在清单文件中启用了 largeHeap,但没有帮助。我需要通过渲染脚本清除 GPU 中的内存,不是吗?我不知道如何做到这一点。

Android OS:4.4.2,设备:Samsung Note II。

有人知道怎么处理吗?

【问题讨论】:

    标签: android bitmap renderscript


    【解决方案1】:

    如果您使用 USAGE_SHARED(默认情况下在 createFromBitmap 中使用)分配内存并且您的位图不是 16 像素宽的倍数,那么您将在日志中看到该消息。但是,这并不危险,不会导致应用崩溃。

    当事情接近尾声时,您是否遇到了实际异常?听起来你可能在某个地方有某种泄漏。

    【讨论】:

    • 你知道拥有一个 16*n 像素宽的位图是否会加快分配速度吗?
    • 它经常这样做——许多驱动程序可以直接使用这些位图的后备存储,而不需要第二次分配 + 复制。这就是 USAGE_SHARED 所做的——如果可能,使用现有的后备存储,否则分配一个新的并进行复制。由于缓存刷新,其他 API 保持不变(即使共享后备存储也必须复制回位图)。
    • 非常感谢。我会在构建我的应用时考虑到这一点!
    • @TimMurray 你能看看这个问题吗? stackoverflow.com/questions/40452679/…
    • @TimMurray 即使共享后备存储不是位图,是否也需要复制回来?我使用的是常规浮点数组(16 字节内存对齐)。
    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2011-07-12
    • 2019-03-05
    相关资源
    最近更新 更多