Объём стека и кучи не фиксирован и зависит от нескольких факторов:
-
Стек (Stack):
- Объём стека определяется на уровне потока (thread).
- Размер стека по умолчанию может отличаться в зависимости от версии Android и реализации виртуальной машины (JVM/ART).
- Обычно этот размер составляет несколько мегабайт (например, 1-8 МБ).
- Размер стека может быть сконфигурирован программно при создании потока, но это редко применяется в стандартной Android-разработке.
-
Куча (Heap):
- Объём кучи выделяется для всего процесса приложения.
- Размер кучи динамически меняется в процессе работы приложения, увеличиваясь при необходимости (до определённого лимита).
- Максимальный размер кучи (heap size) зависит от устройства, общего объёма оперативной памяти и конфигурации системы.
- Типичный максимальный размер кучи для приложения может составлять от десятков до сотен мегабайт на мобильных устройствах.
- Существует также понятие "large heap", которое можно запросить в манифесте приложения (
android:largeHeap="true"), чтобы получить больший максимальный размер кучи, но это не рекомендуется для общего использования из-за возможного негативного влияния на производительность системы и других приложений.
Итого:
- Стек: Несколько МБ (на поток), фиксированный (при создании потока).
- Куча: Десятки/сотни МБ (на процесс), динамический, ограничен максимумом.
Нет точных универсальных значений, так как они зависят от конкретного устройства, версии ОС и конфигурации.