1.1, ip1982 (ok), 20:39, 19/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> obj = null;
Это утечка памяти в Яваскрипте. Ок. После "1" + 1 и т. п. я ничему не удивляюсь. А также filter(None, ...) в питоне.
| |
|
2.28, Аноним (28), 21:23, 19/09/2022 [^] [^^] [^^^] [ответить]
| –8 +/– |
> А также filter(None, ...) в питоне.
И что ты там не осилил понять? Прочитать одно предложение из документации?
| |
2.32, Аноним (32), 21:28, 19/09/2022 [^] [^^] [^^^] [ответить]
| +6 +/– |
В С# и Java тоже почему-то "1" + 1 равно "11"
И в C++ для std::string
Почему?
| |
|
3.36, Аноним (36), 21:33, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Потому что любят обмазываться неявным и несвежим и искать потом трудноуловимые баги)
| |
|
4.40, Аноним (32), 21:39, 19/09/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
Это что за неуловимый бог от автоматического вызова toString() при конкатенации со строкой?
Приведите реальный пример такого бага, например на java.
| |
|
5.170, _kp (ok), 11:23, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Причину таких "неуловимых" багов лучше искать в зеркале.
Да, грамотных программистов на всё не хватит, но тут можно или повышать грамотность и требования, или обложить "макаку" костылями и поощрять массовое невежество.
| |
|
|
7.208, _kp (ok), 11:19, 21/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
> Или изобрести другой оператор для соединения строк
В php используется отдельный оператор для конкатенации строк. При его типизации это полезная идея.
А языки с со строгой типизацией и приведением типов, приводят типы по первому операнду или к явно заданному типу результата. Трудно не запомнить.
И то, если предупреждения не отключать, g++ выдаст предупреждение на местах где может быть потенциальная ошибка.
| |
|
|
|
|
|
4.148, Аноним (121), 01:49, 20/09/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
не равно, вот содержимое по указателю равно (и то - если сравнивать до \0)
| |
|
|
2.34, Аноним (36), 21:30, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Раскройте мысль про фильтр в питоне? задокументированное поведение - которое оставит тру-объекты. не очень читаемо - да, но так и все фп в питоне по построению такое чтобы больше использовали классы и объекты с компрехеншнами. т.е. тут явная философия прослеживается
| |
|
3.41, Атятя (?), 21:44, 19/09/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
>Раскройте мысль про фильтр в питоне?
Дело функции высшего порядка - принимать функции. Например, identity.
>не очень читаемо - да, но так и все фп в питоне по построению
Это не проблема фп и тут это не проблема фп в питоне. Это проблема питоняш, которым сложна выучить три с половиной функции и проблема того, кто выпилил из питона expressions, заменив их statements (а потом судорожно впиливающего expressions назад в виде :=). То, что в питоне угробила ООП - это вина Россума, в это ФП не умеющего.
>больше использовали классы
Добро пожаловать на руби и смоллток, да и common lisp тут полущ будет.
>философия
Васик нашего времени как-то слабо тянет на философию.
| |
|
|
1.2, Аноним (2), 20:45, 19/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
var obj = {};
console.log(obj);
obj = null;
И где тут утечка? Память, на к-ю указывал obj больше никем не используется, спокойно можно её удалять.
| |
|
2.4, Дубльджва (?), 20:47, 19/09/2022 [^] [^^] [^^^] [ответить]
| –7 +/– |
Типа должен появиться джин и исполнить твоё желание? Залезай в код движка и освобождай.
| |
|
3.7, Аноним (2), 20:51, 19/09/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
Типа gc вообще никогда там память не чистит, что даже в таком простейшем случае лажает?
| |
|
4.74, Дубльджва (?), 22:25, 19/09/2022 [^] [^^] [^^^] [ответить]
| –7 +/– |
Кек, какой ещё gc?
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++
| |
|
5.92, Аноним (92), 23:14, 19/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну ок, а джаве тоже нету GC, она ведь тоже на С++ написана. Я тебя понял.
| |
|
|
7.176, Аноним (176), 13:25, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
А не пошёл бы ты в жoпy? Если даже гугл не осилил пофиксить утечки в своём собственном движке - это фактически расписка в том, что сделать это невозможно.
| |
|
|
|
|
7.171, _kp (ok), 11:26, 20/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Если включить компоненты с GC, то будет. И не только с QT.
| |
|
|
|
|
|
2.14, Аноним (14), 21:07, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
>Например в нижеприведённом коде в Chrome утечка памяти возникает из-за объекта "obj", несмотря на то, что ему присваивается значение null, так как Chrome сохраняет внутренние ссылки на выводимые объекты для предоставления возможности их последующего инспектирования в web-консоли.
В новости написано же.
| |
|
3.18, НяшМяш (ok), 21:16, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Это скорее не утечка, а поведение платформы. В принципе, чего ещё от хромиумных ожидать. /s
| |
|
|
Часть нити удалена модератором |
5.44, Аноним (32), 21:47, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
А в чем ограничен мозг у предыдущего комментатора?
Ни одной ссылки на обьект внутри js кода в примере из новости нет и сборщик мусора его должен удалить.
Но не удаляет так как так как браузеру зачем-то нужно хранить вечную ссылку чтобы показать что-то в отладочной консоли.
И вообще где в стандарте написано что console.log создаёт неудаляемый объект?
| |
|
6.51, Аноним (-), 21:58, 19/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Та вроде пишут что-то непонашему:
Please be warned that if you log objects in the latest versions of Chrome and Firefox what you get logged on the console is a reference to the object, which is not necessarily the 'value' of the object at the moment in time you call console.log(), but it is the value of the object at the moment you open the console.
| |
|
7.64, Аноним (32), 22:11, 19/09/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
Это в стандарте ecmascript так и написано Firefox и chrome должны навсегда сохранять объекты для которых был вызван console.log? А как же другие браузеры им то можно их удалить?
| |
|
8.72, Аноним (72), 22:19, 19/09/2022 [^] [^^] [^^^] [ответить] | +2 +/– | ECMAScript описывает базовые положения языка и ни про какой input-output включа... текст свёрнут, показать | |
|
|
6.60, Аноним (72), 22:08, 19/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
А где написано, что не создает ссылки? В спеках вызов логгера - "implementation-defined side effect". В правильно настроенном сборщике все console.log вырезаются из продакшн-сборки, а линтер на них ругается или кидает ворнинг.
| |
|
|
|
|
2.17, Аноним (28), 21:15, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Вот так сишники CVE и прогают, думая что область памяти и указатель на неё — одно и то же. А всего-то нужно было прочитать предыдущее предложение.
| |
2.153, анонимывпывп (?), 04:36, 20/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
> в нижеприведённом коде в Chrome утечка памяти возникает из-за объекта "obj", несмотря на то, что ему присваивается значение null, так как Chrome сохраняет внутренние ссылки на выводимые объекты для предоставления возможности их последующего инспектирования в web-консоли
ты бы чуть ниже прочитал, хоспаде, чел
| |
|
1.6, Аноним (2), 20:50, 19/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
использовании новой версии сайта Facebook.com, приводившие к аварийному завершению браузера на стороне клиента
Фейсбук рулит (нет)
| |
|
2.25, Аноним (25), 21:22, 19/09/2022 [^] [^^] [^^^] [ответить]
| –6 +/– |
Ну конечно давай не будет ничего добавлять и дружно будем сидеть в консоли в консольных соцсеточках. Как перестать с тебя орать?
| |
|
3.157, Без аргументов (?), 07:24, 20/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Чтобы загрузить чат, достаточно даже на JS отправить запрос и получить один ответ размером в 5Кб. Но вебманки называют чисто язык JS нативным, прямо как отдельное что то, не обязательное к изучению при шлепании на реактах.
| |
|
4.160, Аноним (160), 09:39, 20/09/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
Будет некрасиво и не интерактивно пользователям это не нравится. А ты проходи в консоль не задерживайся.
| |
|
|
|
1.13, Корец (?), 21:05, 19/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Граждане, это что же получается, js в браузере теперь пора заменять на раст?
На сишку. В сишке, если ты вызвал free(), то это железно. Все эти {полу-}автоматические управления памятью - полумеры. В сишке если ты забыл что-то, то виноват ты сам. В язычках, типа js, как выясняется, программист может только писать код и надеяться, что он будет работать так, как ожидается.
| |
|
2.31, Аноним (31), 21:27, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
на html
выполнять неконтролируемый (<<докапываться до орфографии здеся<<) чужой код на своём компе - изначально плохая идея
| |
|
3.71, Корец (?), 22:18, 19/09/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ты вещаешь так, как будто ты контролирешь весь тот js, который выполняется в твоём браузере ;)
-Да, но ведь js выполняется в браузере и обёрнут в 100500 песочниц!
-Но что нам мешает запустить таким же образом код на любом другом языке?
| |
|
2.38, Аноним (38), 21:34, 19/09/2022 [^] [^^] [^^^] [ответить]
| +3 +/– |
Зря минусите. Лучшего управления памятью чем вручную еще никто не придумал. Это железобетонный факт, смиритесь.
| |
|
3.167, Аноним (167), 10:56, 20/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Вручную можно как очистить. Так и злонамеренно не отчистить например.
| |
|
2.49, Аноним (-), 21:52, 19/09/2022 [^] [^^] [^^^] [ответить]
| +3 +/– |
> В сишке если ты забыл что-то, то виноват ты сам. В язычках, типа js, как выясняется, программист может только писать код и надеяться, что он будет работать так, как ожидается.
Если ты не понимаешь, как работает сборщик мусора, то это _ты_ не понимаешь. Это твоя безграмотность светится, а не особенности сборщика мусора.
| |
|
3.69, Корец (?), 22:15, 19/09/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
Тогда просяти меня! Я полагаю, что сборщик мусора должен уничтожать всё, на что не осталось ни единой ссылки. Как раз как в коде в новости.
| |
|
4.151, Аноним (151), 04:00, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Ппц ты деревянный, точно программированием деньги зарабатываешь? Из статьи разве непонятно, что твой код не даёт никаких гарантий сам по себе, даже будучи формально корректным, нужно учитывать ещё контринтуитивный саботаж со стороны платформы V8, что в определенных условиях ссылки на все именованные аллокации в куче неявно складываются в глобальный кэш, из-за чего GC не может ничего собрать, так как кэш жив до закрытия браузера?
| |
|
5.164, _hide_ (ok), 10:46, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Как я понял, новость кто-то поправил или я нить Ваших рассуждений теряю.
Ведь черным по белому написано, что никакого кеша нет, просто панель отладки является частью страницы и, если Вы в неё что-то запулили, то ссылка на объект "будет жить вечно", пока консоль не будет очищена. Это неожиданно, но не смертельно (вообще не думал, что такое в продакшене встречается часто)
| |
|
|
|
2.52, Анонн (?), 22:00, 19/09/2022 [^] [^^] [^^^] [ответить]
| +4 +/– |
Да, в сишечке это железно. Вызвал free, а потом другой объект к обратился по этому указателю.
И use-after-free получил. Железно!
| |
|
3.63, Корец (?), 22:11, 19/09/2022 [^] [^^] [^^^] [ответить]
| +5 +/– |
>Вызвал free, а потом другой объект к обратился по этому указателю. И use-after-free получил.
>В сишке если ты забыл что-то, то виноват ты сам. | |
|
4.152, Аноним (151), 04:11, 20/09/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
Вот поэтому сишка уместна для микроконтроллерных прошивок и шеллкодов на 2-3 тысячи строк кода максимум, а для чего-то размером с браузер лучше взять раст. Чем меньше человеческого фактора в кодовой базе, тем лучше. Утверждать обратное - говорить примерно то же самое, что если водишь давно и много, то тебе ремень и подушки безопасности не нужны.
| |
|
3.97, Аноним (92), 23:18, 19/09/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
И нахер ты обращаешься к указателю, к-й уже указывает на невалидную память?
| |
3.172, _kp (ok), 11:43, 20/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Язык делает то что приказали. И делает хорошо. Для того он и создан.
Но, при отсутствии элементарных знаний, Си позволяет новичку пробежаться по граблям.
Ошибки обсуждаются детские. Они и возникают не часто, и отладкой выявляются, и устраняются. Причем без ныться, без поливания грязью сторонних компонентов. Просто, задача решается.
И при переходе с GC языков на Си, иные подобные языки без GC, тоже обычно пишут "весьма странный" код.
| |
|
2.210, Аноним (209), 13:53, 21/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
> В сишке, если ты вызвал free(), то это железно
А потом будешь любоваться внезапными падениями вкладок. В лучшем случае.
| |
|
1.37, Аноним (32), 21:34, 19/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
var obj = {};
console.log(obj);
obj = null;
так как Chrome сохраняет внутренние ссылки на выводимые объекты для предоставления возможности их последующего инспектирования в web-консоли.
Какое-то совсем неожиданное проведение.
| |
|
2.42, Аноним (72), 21:44, 19/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
почему неожиданное? можно позже щелкнуть в девтулзах по объекту правой кнопкой мыши и нажать "Store object as global variable" - и все, ссылка на объект снова восстановлена. IQ чуть выше, чем у хлебушка, подсказывает, что это было бы невозможно, если бы хром не сохранял ссылки на выводимые объекты.
| |
|
3.53, Аноним (32), 22:00, 19/09/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
Пытаюсь проверить что местные эксперты знали ДО этой новости что console.log создаёт неудаляемый обьект, но что-то не получается.
Наверное iq хлебушка не даёт.
| |
|
2.45, Аноним (45), 21:48, 19/09/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
Вполне себе ожидаемое поведение.
let a = {};
let b = {};
a.b = b;
b.a = a;
console.log(a)
Попробуй помедитировать в консоли раскрывая эту структуру до бесконечности и подумать, как такое может быть реализовано.
| |
2.178, Аноним (178), 13:32, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
> Какое-то совсем неожиданное проведение.
Как раз ожидаемое! Объект использует консоль браузера, освобождать объект нельзя (с ним работает консоль, сами же попросили вызвав console.log). Когда в консоли очередь переполнится (которую наверное нужно поменьше поставить) тогда объект и будет удалён.
Даже в православной Java вызов сборки мусора не гарантирует освобождение памяти. GC может всякие эвристики использовать и не спешить отдавать память (для всяких SoftReference), мало ли... В итоге он освободит, но иногда не по первому вызову.
| |
|
1.77, Аноним (31), 22:32, 19/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а как вообще в GC-языке возможны утечки памяти? (не забытые на сусеках объекты, а именно утечки)?
там же типа забил болт на сущность - GC должен подметать, не?
извиняюсь за тупой вопрос, я не веб-макака и не скрипт-кидди
| |
|
2.106, Аноним (-), 23:29, 19/09/2022 [^] [^^] [^^^] [ответить]
| +3 +/– |
> а как вообще в GC-языке возможны утечки памяти? (не забытые на сусеках объекты, а именно утечки)?
Никак. Поэтому в GC-языках утечками памяти называются забытые на сусеках объекты.
| |
|
1.155, Аноним (155), 06:18, 20/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> для разбора причин большого потребления памяти при работе с web-сайтами и web-приложениями.
Как бы им намекнуть, что главная причина - "23-летние синьоры" и прочие радужные профаны между столом и стулом
| |
|
2.158, Аноним (92), 08:33, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
> "23-летние синьоры" и прочие радужные профаны между столом и стулом
уверен, что точно не разрабы хрома, где после присваивания объекту null, он все равно остается существовать?
| |
|
3.206, Аноним (197), 01:52, 21/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Дядя, ты дурак? null присваивается переменной, а не объекту. Сам объект при этом остаётся в памяти, но не может быть собран сборщиком мусора, потому что ссылка на него появляется у консоли.
| |
|
|
1.156, Хухрымухры (ok), 06:51, 20/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Алиллилуя!
Ещё в браузерах надо жестко ограничить максимально потребляемые ресурсы вкладками, чтоб товарищи фронтэндеры начали включать голову.
| |
|
2.161, Аноним (160), 09:43, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Если это кому то реально нужно, почему же тогда большие сайты не уменьшили свои js скрипты до 5кб? Ты найти этого ответа к сожалению не сможешь, поэтому Я приготовил ответ специально для тебя: «Да потому что это не кому не нужно. Пользователю нужны фичи, а не низкое потребление, они за это платят долларом»
| |
|
3.162, Аноним (162), 10:40, 20/09/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
> они за это платят долларом
причём сами того не подозревая (через слив персональных данных и постоянный апгрейд железа)
| |
|
4.168, Аноним (167), 11:00, 20/09/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
И что если они стали от этого полностью счастливыми? Зачем эта надуманная погоня за снижением потребления? Чтобы в твоём колхозе купленный вскладчину ДВК-2 мог отобразить список друзей в ВК?
| |
|
|
6.180, Аноним (180), 14:05, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Абсолютли. Если ты веришь в счастье это считать на МК-54, то я тебя ставлю в известность, то это не так.
| |
|
|
|
5.173, n00by (ok), 12:14, 20/09/2022 [^] [^^] [^^^] [ответить]
| –5 +/– |
> у них же столько счастья
> от того что они не купили большой дорого ПэКа, а смогли
> сэкономить и смотрят 16 цветные видео 224x160 15 кадров в секунду.
Конструктор ATM-turbo 2+ (версия платы v7.18)
Комплектация - печатная плата, полный набор деталей для сборки.
9500 руб
Собранная плата ПК ATM-turbo 2+ (версия платы v7.18)
13500 руб
Материнская плата Elitegroup GLKD-I2-N4120 [BGA 1090, Intel Celeron N4120 4x1.1 ГГц, 1xDDR4-2400 МГц, 1xM.2, Mini-ITX]
5 699 ₽
| |
|
|
7.183, n00by (ok), 14:22, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Орёшь ты про Javascript, поскольку по существу моего сообщения сказать нечего.
| |
|
|
9.188, n00by (ok), 14:57, 20/09/2022 [^] [^^] [^^^] [ответить] | +/– | Да знаю я, что ты никто Регулярно тебе про это пишу Если бы ты не бухал гориль... текст свёрнут, показать | |
|
|
|
6.181, Старый комп (?), 14:07, 20/09/2022 [^] [^^] [^^^] [ответить]
| +3 +/– |
Оуоу, давай, палегче. Что еще за собранная плата? Плату нужно самому травить, микрухи сковыривать со старой электроники, паяльник можно сделать самому. Ты из какой галактики прилетел? Из той где компы на деревьях растут?
| |
|
7.184, n00by (ok), 14:24, 20/09/2022 [^] [^^] [^^^] [ответить]
| +/– |
Каконічный Легион решил сделать вид, что понимает в пайке. На деле показал, что не умеет не только искать, но даже читать.
| |
|
|
|
|
|
|
1.204, Максим (??), 19:57, 20/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Если их код такой же кривой, как и интерфейс мордокниги, то пусть лучше не открывают...
| |
1.212, Онаним. (?), 00:25, 23/09/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
- Например в нижеприведённом коде в Chrome утечка памяти возникает из-за объекта "obj", несмотря на то, что ему присваивается значение null, так как Chrome сохраняет внутренние ссылки на выводимые объекты для предоставления возможности их последующего инспектирования в web-консоли
Тут уже не фреймворки нужны, а пара волчьих смузи. И всё встанет на место.
| |
|