Как современные виртуальные машины справляются с выделением памяти?

Я работаю над простой стековой машиной, написанной на C, в основном для обучения. После использования malloc/freeдля операций с памятью я подумал, что было бы неплохо прочитать код, специфичный для выделения памяти, из современных виртуальных машин.

Я скачал исходный код Lua и начал его читать. Через некоторое время я понял, что задействовано много макросов, и я не смог найти код, в котором выполняется реальное выделение памяти (, т.е. mallocзвоните ).

find. -exec grep -i "malloc" '{}' \; -print

Он напечатал только некоторые макросы Lua, в именах которых есть слово malloc. Lua VM (и язык программирования )вообще не используют malloc!

Это приводит меня к вопросу :, как современные виртуальные машины справляются с распределением памяти? Как Lua выделяет память из кучи? Существуют ли какие-либо способы выделения, кроме malloc? Каковы плюсы/минусы других методов?

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

16
задан Seki 13 June 2015 в 09:32
поделиться