Pull to refresh

Comments 3

Наверное очень помогло ребятам разрабатывающем GC что javascript однопоточный. Алгоритм конечно эвристика на эвристике.

Как вы это сами разбирали по исходным кода или есть такого рода документация у Chrome?

Наверное очень помогло ребятам разрабатывающем GC что javascript однопоточный

И да и нет. С одной стороны, не надо заботиться о синхронизации потоков. С другой, процесс нельзя полностью (или, хотя бы, какую-то существенную часть) разнести по потокам, как это сделано в некоторых других языках, и планировщику нужно отдельно думать о том как и когда собрать мусор. Отсюда и вся вот эта эвристика.

Как вы это сами разбирали по исходным кода или есть такого рода документация у Chrome?

Это внутренние механизмы Chromium. Документации нет. Внутри исходного кода есть несколько README с общими понятиями и концепциями. Какую-то информацию Google сам презентовал на конференциях, например, Memory Reducer и тесты эффективности сборки мусора (с использованием Memory Reducer и без него), были представлены на 37-ой ежегодной конференции ACM SIGPLAN в 2016-м году. Что-то можно узнать из блога V8.dev (в статье есть ссылки на посты). Но часть информации уже устарела (не вся, базовые концепции всё еще актуальны), поэтому единственный достоверный источник - это сами исходники и история комитов. Плюс, иногда в комитах можно найти изначальный Design Doc или ссылку на тред с обсуждением.

Ого, огромная работа!

Sign up to leave a comment.

Articles