Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Какой метод сбора мусора лучше?
Сбор по обнулению счетчика ссылок 11 50.00%
Сбор по таймеру 0 0%
Сбор по ошибке выделения памяти 3 13.64%
Сбор по обнулению счетчика ссылок(+ дефрагментация по ошибке выделения) 5 22.73%
Иное 3 13.64%
Голосовавшие: 22. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 00:20   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию Опрос: Сборщик мусора

в общем решил поразмыслить заранее:
у меня в голове три варианта:
1)Сбор по обнулению счетчика ссылок.
+отсутствие лишней занятой памяти.
+если память не удалось выделить, то сразу ясно, что её не хватило.
-частые обращение к менагеру памяти.
2)Сбор по таймеру
+не такое активное обращение к менагеру памяти.
-при неудачном выделении памяти, возможна ситуация что на самом деле памяти хватит
-висящая занятая память(до таймера)
3)Сбор по неудачному выделению памяти
+редкое обращение к менагеру
-огромные висяки памяти
-двойная попытка выделения памяти(в этом случае считаю рационально это делать)

или есть иные предложения?
скажу сразу, сбор осуществляется на основе подсчета ссылок.
ЗЫ:
Цитата:
-частые обращение к менагеру памяти.
хотя думаю это не станет проблемой, так как менагеру не нужно сканировать все объекты на нулевые ссылки.

еще родилась мысль совместить третий с первым методом:
но в третьем вместо чистки кучи, делать её дефрагментацию.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 00:49   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сейчас мелькнула мысль, а почему б программисту выбор не предоставить?
включать и настраивать сборщик как надо.
соответственно у сборщика сделать событие неудачного выделения памяти(что на каждом new не писать обработчик)

ЗЫ:помоему как всегда, самая мудрая мысль приходит после создания темы
может тогда удалить тему?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 05:59   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

если памяти вобще мало, то 1), если вобще много, то 3), если хрен знает, то:

4) сбор внутри потока с приоритетом THREAD_PRIORITY_IDLE

> а почему б программисту выбор не предоставить?

пусть думает о высоком
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.04.2011, 08:11   #4
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

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

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

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

veniside, памяти много не бывает
anyx вне форума Ответить с цитированием
Старый 17.04.2011, 11:19   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
пусть думает о высоком
да пусть думает, поведение по умолчанию никто не отменял.
Цитата:
Не, только по обнулению счётчика ссылок. Можно включить дефрагментацию по ошибке выделения, полезная вещь.
я тоже так думаю.
а насчет дефрагментации надо еще подумать, ибо она заблокирует потоки напрочь пока делается, а это к сожалению плохо...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 13:41   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
да пусть думает, поведение по умолчанию никто не отменял.я тоже так думаю.
а насчет дефрагментации надо еще подумать, ибо она заблокирует потоки напрочь пока делается, а это к сожалению плохо...
А вообще, вы просто поразмышлять или же какая то задача стоит?
BOBAH13 вне форума Ответить с цитированием
Старый 17.04.2011, 14:26   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в данном случае размышления по поводу что же выбрать
в интерпритаторе применю.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 14:52   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Можно вариант - когда превышен определенный объем - скажем более 30% от всей доступной.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.04.2011, 15:47   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Все конечно радужно и я за подсчет ссылок, только вот не пойму причем тут дефрагментация памяти? Ведь по сути, операционная система, на которой будет запущен ваш интерпретатор, и будет отвечать за (де)фрагментацию памяти, или вы будете работать с памятью не через кучу предоставленную системой? Или я чего то не понимаю?
BOBAH13 вне форума Ответить с цитированием
Старый 17.04.2011, 16:18   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да я вот чето думаю про дефрагментацию кучи я вообще загнул
ну значит всетаки ссылки самое верное, ну впринципе да, не нужно никаких гуляний по куче.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа по уборки мусора. Где недоработка?! Mrbober Общие вопросы C/C++ 2 19.02.2011 15:27
Опрос программистов! arch-vile Свободное общение 25 29.04.2010 17:41
Чистка реестра от мусора Gerzs Софт 1 21.04.2010 09:57
Обработка содержимого ячеек - отчистка от мусора Bromista Microsoft Office Excel 10 17.04.2009 11:39
Программа по удалению мусора KORN Софт 12 31.10.2007 08:58