
Vladimir
17.09.2016
19:29:57
Это не утечки памяти

ZeroFQ
17.09.2016
19:29:59
Ну так в программах на JS же бывают утечки.
А что же это?

Мерлин
17.09.2016
19:30:09

Google

ZeroFQ
17.09.2016
19:30:31
И что тогда вы называете утечками?

Paul
17.09.2016
19:31:05
Уте́чка па́мяти (англ. memory leak) — процесс неконтролируемого уменьшения объёма свободной оперативной или виртуальной памяти компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти, или с ошибками системных служб контроля памяти.

Vladimir
17.09.2016
19:31:05
Утечка - это когда есть выделенная памяти, на которую нет указателей

Paul
17.09.2016
19:32:11
Нет, я бы не завязывался в определии на указатели

ZeroFQ
17.09.2016
19:32:25

Vladimir
17.09.2016
19:32:27
Указатель - это абстрактно
Всмысле доступ к этому участку

Мерлин
17.09.2016
19:32:36

Vladimir
17.09.2016
19:33:04
> @twentydraft
котоырй никогда не будет отдан обратно
Именно. Но он никгда не будет отдан обратно, только если на него нет указателей

Paul
17.09.2016
19:33:27
Это верно только в простейшем случае. Всякие слабы и прочее проходят мимо.

Мерлин
17.09.2016
19:33:31
В js это на раз два
Да и вообще где угодно

Paul
17.09.2016
19:33:57
Да и что такого, если указатель указывает на невыделеннюу память (если есть другой индикатор)?

Roman
17.09.2016
19:34:09
В JS легко насоздавать объектов к которым уже никак не достучаться, но память они жрут. С точки зрения компилятора они есть. И есть указатели на них, но с точки зрения разраба и программы их уже считай нет.

Google

Vladimir
17.09.2016
19:34:24
> @r_vinokurov
которым уже никак не достучаться
как например?

Roman
17.09.2016
19:34:37
замыкания

Vladimir
17.09.2016
19:34:46
К ним можно дочтучаться

ZeroFQ
17.09.2016
19:34:47
Да понятно уже, что Владимир просто иначе трактует понятие утечки памяти. Смысл спорить?

Vladimir
17.09.2016
19:35:01
Вопрос терминологии, да

Мерлин
17.09.2016
19:35:30
"s/true/false"
И можно говорить что угодно, да

Vladimir
17.09.2016
19:35:53
Но в том и смысл, относительно свифта - в нем есть настоящие утечки памяти

Paul
17.09.2016
19:36:15
Можно в двух словах: зачем нужен свифт?
Не холивара ради

Roman
17.09.2016
19:36:24
Насколько я помню в свифте есть какой то аналог GC

Vladimir
17.09.2016
19:36:25
Он лучше Objective-C

Roman
17.09.2016
19:36:28
обрезанный

Paul
17.09.2016
19:36:28
Просто вот я понимаю почему возник раст и что он решает

ZeroFQ
17.09.2016
19:36:28
Так вот да, начали-то мы с целесообразности свифта на сервере.

Мерлин
17.09.2016
19:36:38

Vladimir
17.09.2016
19:36:52
Вот я и говорю - для сервера нужен GC

Paul
17.09.2016
19:36:52

Мерлин
17.09.2016
19:37:06
Новый, стильный, молодёжный

Paul
17.09.2016
19:37:08
Смотря для какого

Roman
17.09.2016
19:37:08

Google

Vladimir
17.09.2016
19:37:11
Там interoperability, все дела

ZeroFQ
17.09.2016
19:37:13

Котяй Негодяй
17.09.2016
19:37:28

Мерлин
17.09.2016
19:38:04

Roman
17.09.2016
19:38:23
создай setInterval на анонимной ф-и, которая замыкается на внешнем контекте, и забудь его убить - с точки зрения терминологии JS народной - это утечка

Paul
17.09.2016
19:38:24
Изоморфность не нужна.

Котяй Негодяй
17.09.2016
19:38:32
И если на объект не осталось указателей, разве сборщик мусора не должен его прибрать?

Vladimir
17.09.2016
19:39:00

Roman
17.09.2016
19:39:01
GC в JS отлично работает. Все что есть это косяки разрабов

Paul
17.09.2016
19:39:03
Я бы не называл это утечками
Утечки памяти это скорее выделять огромную строку, делать .slice(0, 5) и утаскивать в замыкание. В итоге в памяти будет вся большая строка.
Вот это утечка

Vladimir
17.09.2016
19:40:37
Это не утечка совсем

Paul
17.09.2016
19:40:56
И чтобы программисту это контроллировать, ему надо теперь костылить аля (' ' + str).slice(1)

Roman
17.09.2016
19:40:57

Paul
17.09.2016
19:41:12
Это утечка в стандартной библиотеке
А не в языке
Для v8, если не считать std, я утечек не знаю.

Roman
17.09.2016
19:41:46
а можешь сделать пример кода? я не понял. Ну мы утащили, замыкание отработало, контекст грохнулся

Paul
17.09.2016
19:42:01
Нет, ты утащил куда-то эту маленькую подстроку

Google

Paul
17.09.2016
19:42:12
И, как программист, ожидаешь. что там будет всего пять символов

Vladimir
17.09.2016
19:42:30
> Paul
И, как программист, ожидаешь. что там будет всего пять символов
ЭТо уже деталь реализации

Paul
17.09.2016
19:42:46
Это проблема стандартной библиотеки

Vladimir
17.09.2016
19:43:01
Утечка даже в широком смысле слова - это когда память переживает временной период, который она не должна переживать
Например, запрос
В этом примере такого нет

Paul
17.09.2016
19:43:21
Нет никаких shrink_to_fit из раста или крестов.

Мерлин
17.09.2016
19:44:04
Это утечка в стандартной библиотеке
Дык какая разница
Всё равно память течет, и gc не спасает
Или возьмем тот же пых, в котором коллектор работает исключительно хреново
Мы живём в реальном мире, господа, в котором нет идеальных gc, например

Paul
17.09.2016
19:44:31
Ну это не проблема gc, а проблема внутренней реализации строк.

Admin
ERROR: S client not available

Paul
17.09.2016
19:44:40
Я не знаю проблем с GC в v8

Котяй Негодяй
17.09.2016
19:44:58
Ок. Тогда вот какой у меня вопрос:

Мерлин
17.09.2016
19:45:27

Roman
17.09.2016
19:45:29
Paul а вот кстати вот эта проблема со sliсe, я правильно понимаю что она будет проявляться в любом движке из более менее известных?
интересно стало

Paul
17.09.2016
19:45:53

Roman
17.09.2016
19:46:06
я бы почитал тогда про это и подобные кейсы

Paul
17.09.2016
19:46:11
В monkey вроде норм*

Google

Vladimir
17.09.2016
19:46:23
Да может это течь
Оно просто использует больше памяти, что могло - но это не утечка

Paul
17.09.2016
19:47:01
Ну по определению выше это утечка

Мерлин
17.09.2016
19:47:06

Vladimir
17.09.2016
19:47:09

Roman
17.09.2016
19:47:12

Vladimir
17.09.2016
19:47:18
Дп
Да
Просто тебе нужна подстрока, но ретейнится вся строка

Paul
17.09.2016
19:47:44
Эм, ну как нет?

Vladimir
17.09.2016
19:47:48
Неэффективно - да. Утечка - нет

Paul
17.09.2016
19:47:50
> ненужные уже участки памяти

Vladimir
17.09.2016
19:48:15
Этот участок не является ненужным

Roman
17.09.2016
19:48:27
тогда с какого это утечка. В моем понимании утечки страшны тем что память растет непрерывно что в итоге приводит к тормозам и краху программы. Если память не растет, и ресурсы корректно высвобождаются рано или поздно - я не считаю это утечкой

Paul
17.09.2016
19:48:44
Он ненужный. Ибо *неизменяемая* строка это два указателя.

Котяй Негодяй
17.09.2016
19:48:50
Есть терминал самообслуживания. На нём крутится небольшой бэкенд на ноде, который взаимодействует с аппаратной частью, и SPA, которое взаимодействует с удалённым и локальным API. Почитав чат, я начинаю опасаться, что полностью исключить риск утечек как в браузере, так и в локальном API, не получится, и приложение будет периодически виснуть. Так ли это?

Paul
17.09.2016
19:48:58
То, что движок решил не копировать это как раз причина.

Vladimir
17.09.2016
19:49:12
Вот ткаое определение утечки - если для работы программы в течении бесконечного периода требуется конечное количество памяти, то утечки нет

Paul
17.09.2016
19:49:42

Roman
17.09.2016
19:49:57
Есть терминал самообслуживания. На нём крутится небольшой бэкенд на ноде, который взаимодействует с аппаратной частью, и SPA, которое взаимодействует с удалённым и локальным API. Почитав чат, я начинаю опасаться, что полностью исключить риск утечек как в браузере, так и в локальном API, не получится, и приложение будет периодически виснуть. Так ли это?
я на ноде проблему утечек в рамках ограниченного времени решал влоб - перезапускал процессы, а данные шарил в стораджах, то есть получал типа stateless

Paul
17.09.2016
19:50:02

Vladimir
17.09.2016
19:50:11
Из головы