Информация об изменениях

Сообщение Почему фреймы стека не выделяют в куче? от 29.11.2021 22:10

Изменено 29.11.2021 22:36 Эйнсток Файр

Почему фреймы стека не выделяют в куче?
Аппаратный стек тогда бы содержал только один указатель на фрейм и адрес возврата.
Либо даже адрес возврата был бы тоже во фрейме, например первым.

Да, это дополнительная косвенность, но кого это вообще волнует в наши времена быстрых процессоров?
https://stackoverflow.com/questions/26741925/is-frame-in-jvm-heap-allocated-or-stack-allocated

Зато все значения переменных хранились бы в памяти, и к ним можно было бы осуществлять одинаковый доступ (например при сборке мусора).

The benefit of this approach is to have a single memory management for everything including thread stacks.

Почему фреймы стека не выделяют в куче?
Аппаратный стек тогда бы содержал только один указатель на фрейм и адрес возврата.
Либо даже адрес возврата был бы тоже во фрейме, например первым.

Да, это дополнительная косвенность, но кого это вообще волнует в наши времена быстрых процессоров?
https://stackoverflow.com/questions/26741925/is-frame-in-jvm-heap-allocated-or-stack-allocated

Зато все значения переменных хранились бы в памяти, и к ним можно было бы осуществлять одинаковый доступ (например при сборке мусора).

The benefit of this approach is to have a single memory management for everything including thread stacks.


А раньше, говорят, выделяли:
https://softwareengineering.stackexchange.com/questions/113019/why-does-garbage-collection-only-sweep-the-heap

that's not the popular approach these days. Java's JVM and Microsoft's CLR use the hardware stack and contiguous memory.