LINUX.ORG.RU

Сборка мусора на умных указателях

 


1

2

Многие пользуются shared_ptr, немногие - Boehm GC, а почему не объединить их преимущества, сделав mark-n-sweep на умных указателях? Это бы решило проблемы обоих вариантов (вероятно, за счёт большего расхода памяти).

Или такой вариант применяется, просто я не встречал?

★★★★
Ответ на: комментарий от erfea

да, конечно. ведь gc совсем не тормозит и работает быстрее процессора

ckotinko ☆☆☆
()
Ответ на: комментарий от Miguel

Немцы мусорят поболее нашего, но на улицах чисто. Потому что ночью там тщательно убирают.

А в Припяти какой-нибудь не мусорят, но там грязно. Потому что не убирают :)

KRoN73 ★★★★★
()
Ответ на: комментарий от erfea

Аргументы и аналогии вещи разные, осиль перенести и сопоставить с сабжем.

От тебя не прозвучало ни одного аргумента кроме невнятного мычания и феерических аналогий. Хоть не на машинах сравнивал, спасибо. Ты вякнул, что у меня кончились аргументы, так вот изволь предоставить свои прежде чем спрашивать с других.

Где я сказал что обязательно на что-то напарываться, что бы проектировать?!

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

А теперь роди пруф, где я говорил прикручивать к проекту на крестах что либо?! Давай, давай, давай!!! Я жду!!!

Ты голословно бздел, что, раз есть необходимость в ГЦ, следует воспользоваться другим «годным языком со сборщиком мусора». Ты конечно говорил о своих домашних работах в от силы двадцать строк, где язык сменить раз плюнуть, но я имею право трактовать твои слова более широко: если мне в некоторой части программы на С++ понадобился сборщик мусора, Ерфа советует сбегать за «годным языком со сборщиком мусора» и прилепить его к своей программе!!!

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

Только идиоты могут делать аналогии одним вещам в терминах абсолютно других, никак с первыми не связанных, и еще пытаться этим что-то доказать.

staseg ★★★★★
()
Ответ на: комментарий от Miguel

А как найти корневые объекты?

А какая связь?

Ты показал, как из найти ссылки из объекта на другие объекты. А как найти ссылки на объект из стека? Начинается-то обход с них.

unsigned ★★★★
() автор топика
Ответ на: комментарий от ckotinko

Ты пишешь, как оптимизировать использование счётчика ссылок, а я предлагал от него отказаться.

Подобная оптимизация у меня тоже возможна... Но это в любом варианте возвращает нас к ручному слежению за временем жизни объекта, от которого была задача уйти.

unsigned ★★★★
() автор топика

От «умных указателей» сплошной оверхед как по памяти, так и производительности, особенно в многопоточных приложениях. Сборка мусора подойдет разве что для десктопа, они нынче жирные и какому-нибудь IM-клиенту считается позволительным выкушать гигабайта полтора памяти, прежде чем озаботиться сборкой мусора.

Единственный реальный плюс от сборки мусора в виде дефрагментации памяти дает перемещающая сборка, но это такие адские тормоза, что лучше как-нибудь без нее ручками.

red_eyed_peguin
()
Ответ на: комментарий от red_eyed_peguin

Какая свинья тебе сказала такую чушь? Компактифицирующий stop and copy очень быстро работает. Параллельный generational mark and sweep вообще не тормозит работу собственно мутатора, занимает себе пустующее ядро и никому жить не мешает. Про якобы «тормоза» сборки мусора обычно верещат только совсем уж безграмотные, никчемные, тупые и ничтожные людишки. Ну, то есть, шваль всякая вроде тебя.

anonymous
()
Ответ на: комментарий от anonymous

Снизойду до анонимного кукаретика: если объем данных приложения — полтора мегабайта, то да, очень быстро. Почему я и говорю: для десктопов этот костыль может и сгодится.

занимает себе пустующее ядро и никому жить не мешает

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

red_eyed_peguin
()
Ответ на: комментарий от red_eyed_peguin

А почему ви счгитаете, что грузить ядро на 100% это плохо?

anonymous
()
Ответ на: комментарий от red_eyed_peguin

Нет, недоумок, это быстро для любых приложений. Потому как stop and copy делается для первого поколения, которое обычно килобайт 16 размером, не больше.

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

Давно убедился, нет мрази тупее чем плюсокодеришки.

anonymous
()
Ответ на: комментарий от anonymous

Что я путаю?

int main()
{
  T *x = new T;
  // запустился gc
  x->f();
}
gc должен найти указатель x. Поскольку это невозможно, я и использую умный указатель - gc_ptr<T> вместо T*. Вопрос был, как это делает Miguel.

unsigned ★★★★
() автор топика
Ответ на: комментарий от anonymous

Ололо, в твоей эльфляндии объекты бывают только двух типов: короткоживущие и вечные? Что будет, если реализовать поверх такого «gc» кеш, в котором время от времени долгоживущие объекты (состоящие из кучи маленьких, кстати) будут удаляться?

Я же говорю: gc годно только для гуевых оберток над df.

red_eyed_peguin
()
Ответ на: комментарий от unsigned

пишите уже прямо, что у жабистов задача - это молиться жабе.

у нормальных людей ничего почему-то не тормозит. и память гигабайтами не жрет

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

Откуда вы взяли жабу? Не умеете читать теги?

у нормальных людей ничего почему-то не тормозит. и память гигабайтами не жрет

«Легковесные панельки», «легковесные файловые менеджеры», а теперь это... (комментарий)

unsigned ★★★★
() автор топика
Ответ на: комментарий от VadimAlexeev

А русского языка в вашей школе тоже не было?

anonymous
()
Ответ на: комментарий от VadimAlexeev

это учат не на информатике, это как бы правила поведения, но их можно также приравнять и к данной теме

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от red_eyed_peguin

В моей эльфляндии 99.9999% объектов иммутабельны. А кэши у нас делают на weak pointers, что намного эффективнее всего, что ты своими косыми лапами наговнякаешь на своем убогом плюсике.

Пойди, ничтожество, почитай хоть что нибудь про то, как современные GC реального времени устроены.

anonymous
()
Ответ на: комментарий от anonymous

Херово они устроены, потому что весь серверный софт на жабке неизбежно скатывается к ручному управлению нативными указателями.

P. S. Передавай привет лесным феечкам!

red_eyed_peguin
()
Ответ на: комментарий от red_eyed_peguin

Сявка, если твои представления о GC одной только жабой ограничиваются, то тебе стоит самоубиться. Чисто из жалости. Зачем жить такому убогому?

Не, нынешние плюсокодеры хуже даже пыхеров!

anonymous
()
Ответ на: комментарий от ckotinko

Неграмотность и убожество приплюснутого быдла просто поражает. Давно подмеченна корреляция - есть в резюме C++ - брать на работу эту мразь нельзя ни в коем случае.

anonymous
()
Ответ на: комментарий от anonymous

школьник, ну не плачь. скажи маме она тебе новый gc купит.

ckotinko ☆☆☆
()

Boehm - консервативный сборщик, он сам ищет указатели в памяти, а значит с shared_ptr не совместим.

anonymous
()
Ответ на: комментарий от anonymous

Так ты бы лучше пояснил, что за язык используешь и что под ним лежит. Я вот, например, юзаю scala, но работает-то она в JVM...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.