170 похожих чатов

Интересно, как же получить утечку память в менеджед среде, когда

аллокациями управляет гц?%) И когда ты не контроллируешь когда объект задиспоузится

18 ответов

4 просмотра

Когда ссылка на объект остаётся же

Pavel-Erokhin Автор вопроса
John Doe
Когда ссылка на объект остаётся же

Это не утечка, у тебя в стринг пуле тоже ссылка остается на строку, утечка?%)

Под "гц" имеется в виду сборщик мусора?

Pavel-Erokhin Автор вопроса
John Doe
Как это тогда назвать?

К примеру, нежелательное удержание ресурса, в контексте открытых соединений, если мы забыли убрать объект из мапы, которая живет дольше, чем тот объект который управляет, объектом который добавлен в мапу, то можно назвать аналогично

Есть "технические" утечки, когда память становится недоступна для использования. Чаще всего они ассоциируются с ошибками в коде на си и плюсах (выделение памяти без её освобождения и дальнейшее удаление указателя, или несоответствие способов выделения и освобождения) Есть "логические" утечки. Сохранение памяти, которая не нужна для дальнейшей работы приложения, но которая не может быть освобождена gc из-за наличия на неё ссылок. В js такой тип утечки не только возможен, но и активно практикуется. Этот тип утечек есть во всех распространённых языках с gc: код на жаве и шарпе так же может страдать от утечек, и процессы на них так же могут убиваться oom killer'ом

Pavel-Erokhin Автор вопроса
Алексей Попов
Есть "технические" утечки, когда память становится...

нет той грани, где повышенный аллокрейт и малое кол-во выделенной памяти хипу, не похож на утечку памяти))

Есть эта грань. Выделение памяти для работы/накопившиеся области памяти, с которыми работы уже не будет Терминология устоявшаяся. Я когда-то тоже считал, что утечки в шарпе это не утечки. Но если прошерстить техническую литературу, то можно найти множество употреблений этого термина по отношению к managed среде. Поэтому твоя война - война с тем, что в комьюнити уже давно определено И вот тебе ещё один кейс: в свифте не gc, а подсчёт ссылок. Циклические ссылки при этом никак не разруливаются. Кажется, даже согласно твоей позиции это утечка. Но ручного управления памятью при этом нет

Pavel-Erokhin Автор вопроса
Алексей Попов
Есть эта грань. Выделение памяти для работы/накопи...

> с которыми работы уже не будет Так и где та грань, когда будет или нет? Я понимаю что с человеческой точки зрения, можно выделить ее А компьютеру откуда знать об этом? Откуда об этой грани знать гарбадж коллектору?

Pavel Erokhin
> с которыми работы уже не будет Так и где та гр...

А зачем нужно знание этой грани кампуктером? Типа если он знает, то это утечка, а если нет, то не утечка? Но я выше написал, что это не так. Термин "утечка памяти" не связан с ручным управлением памятью

Pavel-Erokhin Автор вопроса
Алексей Попов
Есть эта грань. Выделение памяти для работы/накопи...

Хорошее замечание про гц в свифте, действительно, его там нет, алгоритм с подсчетом ссылок довольно примитивный и не решает проблему с циклическими ссылками, но тут я могу сослаться лишь на то, что такова реализация, и да, в таком случае, так как гц не покрывает такой случай (так как его по факту нет), то может считаться утечкой, Но мы про управляемую нодджс платформу, где с гц таких проблем нет

Pavel Erokhin
Хорошее замечание про гц в свифте, действительно, ...

Они есть, но не в js, а в v8: если ты сохранишь ссылку на substring, то в памяти будет храниться вся строка, даже когда ссылки на эту строку будут потеряны Однако утечки памяти в js есть не по этой причине. А потому, что твоя трактовка этого термина отличается от общепринятой

Есть устоявшиеся терминологии которые приняты сообществом. Вот из официального сайта node.js, из раздела по управлению памятью. ===node.js===== Node.js (JavaScript) is a garbage collected language, so having memory leaks is possible through retainers. As Node.js applications are usually multi-tenant, business critical, and long-running, providing an accessible and efficient way of finding a memory leak is essential. ===node.js===== А вот из доки MDN ===mdn===== There is a limitation when it comes to circular references. In the following example, two objects are created with properties that reference one another, thus creating a cycle. They will go out of scope after the function call has completed. At that point they become unneeded and their allocated memory should be reclaimed. However, the reference-counting algorithm will not consider them reclaimable since each of the two objects has at least one reference pointing to them, resulting in neither of them being marked for garbage collection. Circular references are a common cause of memory leaks. ===mdn======

Эркин Бахтушкин
Есть устоявшиеся терминологии которые приняты сооб...

Собственно, и общее определение никак не противоречит JS

Так если к этим самым объектам нет доступа откуда либо, то какой смысл их оставлять!? P.S. Лучше тогда ссылки оставить, чтобы и примеры сами увидеть.

ᅠ ᅠ
Так если к этим самым объектам нет доступа откуда ...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_management

ᅠ ᅠ
Так если к этим самым объектам нет доступа откуда ...

GC не всегда может понять, является объект мусором или нет

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Карта сайта