Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / сборщик мусора и языки / 25 сообщений из 32, страница 1 из 2
20.05.2017, 17:54
    #39456646
qq2017
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Во многих языках со встроеным сборщиком мусора(c#,java,python) есть проблемы производительности,
вызваные работой этого сборщика мусора. В c++ backend используются простейшие по устройству SmartPointer'ы
- и всё ок. Почему подобный подход не используется или не применим к языкам, упомянутым в начале?
...
Рейтинг: 0 / 0
20.05.2017, 18:28
    #39456649
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Наверное со SmartPoint-ерами не все ОК.
...
Рейтинг: 0 / 0
20.05.2017, 19:14
    #39456657
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Не все ОК, есть проблема с циклическими ссылками.
...
Рейтинг: 0 / 0
20.05.2017, 19:27
    #39456662
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
SmartPointer - это же reference counting? В Питоне он вроде до сих пор используется. В джаве, вроде, решили, что дешевле прибивать поколения, чем у каждого ссылки считать.
И обычно проблемы не в сборщике мусора, а в алгоритмах.
...
Рейтинг: 0 / 0
20.05.2017, 20:01
    #39456670
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Dima TНе все ОК, есть проблема с циклическими ссылками.
Это сильно надуманная проблема новичков. Для этого в паре со shared_ptr идет weak_ptr
...
Рейтинг: 0 / 0
20.05.2017, 20:31
    #39456684
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
YesSqlDima TНе все ОК, есть проблема с циклическими ссылками.
Это сильно надуманная проблема новичков. Для этого в паре со shared_ptr идет weak_ptr
Hello, World!
...
Рейтинг: 0 / 0
20.05.2017, 20:53
    #39456692
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Можно начать с того, что не у всех есть стековая память.
...
Рейтинг: 0 / 0
20.05.2017, 22:40
    #39456716
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
SiemarglМожно начать с того, что не у всех есть стековая память.
У кого нет? )
...
Рейтинг: 0 / 0
21.05.2017, 00:21
    #39456746
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
YesSqlDima TНе все ОК, есть проблема с циклическими ссылками.
Это сильно надуманная проблема новичков. Для этого в паре со shared_ptr идет weak_ptr
Вот уже начинаются проблемы -- различные типы поинтеров. Добавь к этому ещё кастомные делитеры и проблемы, решаемые через secret ctor . Подгнило что-то в Датском королевстве, поэтому эти ваши сисярпы/явы и не запариваются по этому поводу.
...
Рейтинг: 0 / 0
21.05.2017, 00:22
    #39456748
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Anatoly MoskovskySiemarglМожно начать с того, что не у всех есть стековая память.
У кого нет? )AFAIK классы c#, явы и питона хранятся исключительно в хипе.

структуры c#, временные ссылки (т.е. указатели) - на стеке. но это явно меньшее количество данных
...
Рейтинг: 0 / 0
21.05.2017, 01:31
    #39456764
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
qq2017,

достаточно заглянуть в Википедию: Подсчёт ссылок . Подсчёт ссылок может ухудшать производительность, по сравнению со сборкой мусора. И могут быть проблемы с циклическими ссылками.

В английской Вики расписано намного подробнее: Reference counting . Например, интересен взвешенный подсчёт ссылок.
...
Рейтинг: 0 / 0
21.05.2017, 02:38
    #39456772
сборщик мусора и языки
Alexander A. SakSmartPointer - это же reference counting? В Питоне он вроде до сих пор используется. В джаве, вроде, решили, что дешевле прибивать поколения, чем у каждого ссылки считать.
И обычно проблемы не в сборщике мусора, а в алгоритмах.
В Питоне сразу два способа очищения памяти: старый - ref-counting, и новый - garbage collector чтобы подчищать за циклическими ссылками.
Для веб часто третий способ используют - периодически грохать процессы.
О том, как в Instagram отключили сборщик мусора Python и начали жить
...
Рейтинг: 0 / 0
21.05.2017, 08:29
    #39456784
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
petalvikqq2017,

достаточно заглянуть в Википедию: Подсчёт ссылок . Подсчёт ссылок может ухудшать производительность, по сравнению со сборкой мусора. И могут быть проблемы с циклическими ссылками.

В английской Вики расписано намного подробнее: Reference counting . Например, интересен взвешенный подсчёт ссылок.

Может ухудшить. Тут нужна аккуратность, как и вообще с С++.
...
Рейтинг: 0 / 0
21.05.2017, 09:04
    #39456786
YesSql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
NekZYesSqlпропущено...

Это сильно надуманная проблема новичков. Для этого в паре со shared_ptr идет weak_ptr
Вот уже начинаются проблемы -- различные типы поинтеров. Добавь к этому ещё кастомные делитеры и проблемы, решаемые через secret ctor . Подгнило что-то в Датском королевстве, поэтому эти ваши сисярпы/явы и не запариваются по этому поводу.
Это не подгнило. Это говорит о возможностях кастомизации и контроля над поведением приложения.
Кому-то нужен cisco router а кому-то и asus за глаза.
...
Рейтинг: 0 / 0
21.05.2017, 11:54
    #39456822
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
OoCcМожет ухудшить. Тут нужна аккуратность, как и вообще с С++.

AFAIK Java и C#
ОЧЕНЬ быстро выделяют память, new работает почти мгновенно, но соответственно могут очень долго ее чистить (gc)

C, C++
Не очень быстро ))) выделяют (new) и не очень быстро освобождают (delete)

И у того и у другого есть свои плюсы и минусы )))
...
Рейтинг: 0 / 0
21.05.2017, 13:29
    #39456842
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Leonid KudryavtsevOoCcМожет ухудшить. Тут нужна аккуратность, как и вообще с С++.

AFAIK Java и C#
ОЧЕНЬ быстро выделяют память, new работает почти мгновенно, но соответственно могут очень долго ее чистить (gc)

C, C++
Не очень быстро ))) выделяют (new) и не очень быстро освобождают (delete)

И у того и у другого есть свои плюсы и минусы )))
Я имел ввиду смарт указатели. Что касается аллокатора то говорить о том что он медленный нет никакого смысла. В языках С и С++ его нет вообще.
...
Рейтинг: 0 / 0
21.05.2017, 13:38
    #39456844
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
SiemarglAFAIK классы c#, явы и питона хранятся исключительно в хипе.

структуры c#, временные ссылки (т.е. указатели) - на стеке. но это явно меньшее количество данных
Но стековая память-то есть ))
...
Рейтинг: 0 / 0
21.05.2017, 16:57
    #39456886
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Leonid KudryavtsevOoCcМожет ухудшить. Тут нужна аккуратность, как и вообще с С++.

AFAIK Java и C#
ОЧЕНЬ быстро выделяют память, new работает почти мгновенно, но соответственно могут очень долго ее чистить (gc)

C, C++
Не очень быстро ))) выделяют (new) и не очень быстро освобождают (delete)

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

А локальных одноразовых переменных на порядок больше, чем долговременных.

В итоге, виноват GC, что ему насовали столько, что не обработать.... А не криволапная концепция языка, которая все сует в Хип

Anatoly MoskovskySiemarglAFAIK классы c#, явы и питона хранятся исключительно в хипе.

структуры c#, временные ссылки (т.е. указатели) - на стеке. но это явно меньшее количество данных
Но стековая память-то есть ))
Стековая память есть везде, где процессор это позволяет. Вроде бы все современные +-10лет к этому пришли.
...
Рейтинг: 0 / 0
21.05.2017, 17:16
    #39456892
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
SiemarglСтековая память есть везде, где процессор это позволяет
там где не позволяет - тож есть - IBM/360+ например
...
Рейтинг: 0 / 0
21.05.2017, 17:31
    #39456897
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
ИзопропилSiemarglСтековая память есть везде, где процессор это позволяет
там где не позволяет - тож есть - IBM/360+ напримерИзвините, не некромант. Живых не видел тоже
...
Рейтинг: 0 / 0
22.05.2017, 00:32
    #39456992
qq2017
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Благодарю за ответы!
Всё оказалось не так просто. Хочется уточнить более интересный с практической точки зрения момент:

Допустим есть приложение(например бэкэнд), написаный:
1) На С++ без явного управления памятью - только стэковая память и объекты со счётчиком ссылок(shared_ptrы и т.п)
2) То же самое на обычном языке со сборщиком мусора(C#/java/python)

Будет ли первый вариант лучше/не хуже в большинстве случаев?
...
Рейтинг: 0 / 0
22.05.2017, 00:36
    #39456994
qq2017
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
SiemarglВ итоге, виноват GC, что ему насовали столько, что не обработать.... А не криволапная концепция языка, которая все сует в Хип

Кстати, D в этом вопросе отличается от других?
...
Рейтинг: 0 / 0
22.05.2017, 00:39
    #39456995
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
qq2017SiemarglВ итоге, виноват GC, что ему насовали столько, что не обработать.... А не криволапная концепция языка, которая все сует в Хип

Кстати, D в этом вопросе отличается от других?Поменяли к худшему - как в шарпе - структуры на стеке, классы в хипе (
...
Рейтинг: 0 / 0
22.05.2017, 05:33
    #39457018
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
qq2017Почему подобный подход не используется или не применим к языкам, упомянутым в начале?Потому что парадигма. Когда язык разрабатывался, решили, что у нас в основе будет это, это и это. Безопасной работы с памятью в сях не было, разработчики языка решили сделать всем хорошо и сразу. В общем, явщики упирают в скрытие деталей и быструю разработку и сожрать всю память на сервере, плюсовики - в оптимизацию и гибкость. На плюсах можно быстро сделать яву, а вот на яве плюсы - неее
В плюсах, кстати, уже есть библиотеки сборщиков мусора. Тут где-то 2-3 в пример приводили.
...
Рейтинг: 0 / 0
22.05.2017, 08:37
    #39457050
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сборщик мусора и языки
Leonid KudryavtsevC, C++
Не очень быстро ))) выделяют (new) и не очень быстро освобождают (delete)
с чего вдруг такое?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / сборщик мусора и языки / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]