Pull to refresh

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 разных пространств со своими подходами к дефрагментации. Ещё интересный вопрос работы тредов с общей памятью и её очистка, это вообще мне кажется на отдельную огромную статью тянет)

Sign up to leave a comment.

Articles