Size: a a a

2019 December 10

АА

Алексей Авдеев in JSNN 🤔 (GSNN)
тут, наверное, прикол в том, что я уже привык мыслить в рамках одной концепции :)
источник

m

mg901 in JSNN 🤔 (GSNN)
Алексей Авдеев
тут, наверное, прикол в том, что я уже привык мыслить в рамках одной концепции :)
я даже все жизненные циклы выучить не мог))) Постоянно в доку заглядывал. С хуками всё элементарее, ИМХО.
источник

m

mg901 in JSNN 🤔 (GSNN)
Посоветуйте пожалуйста литератуту или видосики по утечкам памяти в js. До сих пор до конца не понимаю эту тему.
источник

О

Олег in JSNN 🤔 (GSNN)
источник

О

Олег in JSNN 🤔 (GSNN)
Не в общем про утечки памяти, но интересный частный случай про утечки памяти при взятии подстроки в движке V8
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
В общем, оказывается, что строки содержат ссылки на родительские строки! Что??


Ну так это же COW семантика, со строками все так работают
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
COW = copy on write?
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Да
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Это другое. Copy-on-write это когда у нас иммутабельная коллекция, при записи в которую создаётся полная копия с изменённым полем.
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
У тебя в памяти char[] хранится один раз, а sliced string — это два указателя на области памяти
Соответственно при изменении того участка, происходит реорганизация
Вот Trim, как пример:
https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/objects/string.cc#L332
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Вот прям пруф того, как это сделано
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Что является абсолютно адекватной реализацией строк и вариацией COW семантики
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Да нет же, COW это реализация иммутабельности через копирование. Ничего общего со структурным шарингом, который делается ради быстродействия и экономия памяти.
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Но я настаивать не буду
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Слова COW и иммутабельность никак не связаны
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Имхо
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-on-write

Вот мотивация и описание вполне годные
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Это просто способ ленивизации выполнения реаллокации/копирования в памяти
источник