【问题标题】:Does Renderscript use memory of the heap, or like JNI?Renderscript 是使用堆内存还是像 JNI 一样?
【发布时间】:2015-09-30 17:23:46
【问题描述】:

正如标题所说。

假设最大堆大小为 50MB,但设备有 2GB 的 RAM,Renderscript 将能够使用 2GB 还是将其限制为 50MB?

如果限制为 50MB,是否可以以某种方式使用 2GB?

如果不限制为 50MB ,我该如何使用它?

而且,“分配”的使用实际上是分配了更多的内存,还是更多地绑定了要在 Renderscript 上使用的位图数据?

我问这个是因为有时您想使用大量内存来处理任务,即使输入和输出的内存使用量可能很小。

【问题讨论】:

    标签: android java-native-interface heap-memory renderscript


    【解决方案1】:

    在我的实验中,renderscript 分配在 Java 堆的预算内。这在official documentation中没有明确表示,但可以从文字中推断出来:

    Android VM 可以执行垃圾回收以及与 RenderScript 运行时层共享内存

    我不确定这是否也适用于静态(编译时)分配。

    【讨论】:

    • “静态分配”是什么意思?你的意思是那些在RS代码本身里面的?像“int [1024]”等...?
    • 我的意思是 您在 RenderScript 中声明的非静态全局变量在编译时分配了内存。您可以直接在 RenderScript 代码中使用这些变量,而无需在 Android 框架级别为它们分配内存。
    • 问题是,这些变量是堆的一部分,还是像 JNI 上的一样,是设备 RAM 的一部分?
    猜你喜欢
    • 2021-10-04
    • 2011-11-08
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    相关资源
    最近更新 更多