Изучая языки, такие как java или C, мы узнаем о распределении статической и динамической памяти. Определения, приведенные для них несколько, как показано нижеРаспределение памяти. Как я могу связать уровень программы и физический уровень?
Static memory allocation - memory is allocated in stack during compile time.
Dynamic memory allocation - memory is allocated in heap during run time.
При рассмотрении компьютерной архитектуры, говорят, что если размер переменных превышает больше, чем в кэше L1, он должен быть загружен из кэша L2 или основной памяти и произойдет много замен. По моему мнению, кеши L1 обычно находятся в килобайтах, поэтому в случае программ с большими переменными, таких как массив размером 10 миллионов, как можно выделить столько памяти во время компиляции?
Просьба дать представление о том, как я могу сопоставить память, выделенную на физическом уровне и на уровне программы?