Использует ли Renderscript память кучи или как JNI?

Как следует из названия.

Предположим, что максимальный размер кучи составляет 50 МБ, но устройство имеет 2 ГБ ОЗУ, сможет ли Renderscript использовать 2 ГБ или он будет ограничен 50 МБ?

Если он будет ограничен 50 МБ, можно ли как-то использовать 2 ГБ?

Если он не будет ограничен 50 МБ, как мне его использовать таким образом?

И действительно ли использование «Распределения» выделяет больше памяти или это больше связано с привязкой данных растрового изображения, которые будут использоваться в Renderscript?

Я спрашиваю об этом, потому что иногда вы хотите использовать много памяти для обработки задачи, даже если ввод и вывод могут быть небольшими в использовании памяти.


person android developer    schedule 30.09.2015    source источник


Ответы (1)


В моих экспериментах аллокации рендерскрипта были на бюджете кучи Java. Об этом прямо не говорится в официальной документации., но можно вывести из слов:

виртуальная машина Android может выполнять сборку мусора, а также совместно использовать память со слоем выполнения RenderScript.

Я не уверен, что это относится и к статическим выделениям (во время компиляции).

person Alex Cohn    schedule 01.10.2015
comment
Что вы имеете в виду под статическим распределением? Вы имеете в виду те, которые находятся внутри самого кода RS? как int [1024] и т.д...? - person android developer; 01.10.2015
comment
Я имею в виду, что нестатические глобальные переменные, которые вы объявляете в своем RenderScript, выделяются в памяти во время компиляции. Вы можете работать с этими переменными непосредственно в коде RenderScript, не выделяя для них память на уровне платформы Android. - person Alex Cohn; 01.10.2015
comment
Дело в том, являются ли эти переменные частью кучи или, как в JNI, частью оперативной памяти устройства? - person android developer; 02.10.2015