Comments 5
Примитивные типы данных, такие как Number, String, Boolean, undefined, null и symbol, обычно хранятся прямо в стеке
В V8 на стеке обычно хранятся только smi (маленькие целые) и совсем короткие строки. Всё остальное практически всегда по ссылке передаётся.
Насчёт сборки мусора – всё ещё сложнее, потому что спейсов давно не два, а больше десятка. Вот тут подробнее https://wingolog.org/archives/2023/12/07/the-last-5-years-of-v8s-garbage-collector, по мне самая важная часть там – про concurrency.
В V8 на стеке обычно хранятся только smi (маленькие целые) и совсем короткие строки
вот и я читаю и чуток не понимаю - то ТС застрял в 2017 или это старая статья, просто подвязанная по нашедшемуся поводу?
Да и так неточностей, оговорок, несоответствия описанного реальности хватает, но как-бы не насколько как по стеку и спейсам... Но, правда, ведь и весь топик про очистку мусора.....
Спасибо! Легко читалось! Мне, для лучшего понимания, но без желания копаться в исходниках на плюсах, как полезное развлечение, помогли эксперименты с флагами GC на ноде, ну и в продакте очень помогает, особенно если есть жесткие ограничения по ресурсам (node --v8-options)
лучшего понимания, но без желания копаться в исходниках
так а ведь и не будет лучшего понимание без желания разобраться как усе устроено (в том числе и копаться в исходниках сборщика). Или я где-то неправ?
Конечно правы, я скорее описал где мне было удобно "пощупать руками" и посмотреть профайлером, как происходит сборка и какие параметры можно подкрутить, как это повлияет на потребление памяти и т.д. так сказать как реализовать песочницу) Так то и статья не раскрывает и половины того что там сейчас творится, насколько сложнее стала сборка, насколько сильно поменялся подход к сусурити, из-за чего там уже под 20 разных пространств со своими подходами к дефрагментации. Ещё интересный вопрос работы тредов с общей памятью и её очистка, это вообще мне кажется на отдельную огромную статью тянет)
Сборка мусора в JavaScript