![]() |
|
Модераторы: LSD |
![]()
|
|
||
|
|
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
ну и?
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Ну, я за первый вариант.
-------------------- |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: нет Всего: 372 |
Второе.
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Lazin, у тебя появилось новое рабочее место?
А вообще - зависит от задачи. Для прикладных приложений - само собой полноценный GC нужен, для системного девелопмента - само собой вручную... Добавлено через 42 секунды PS Не голосовал |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Я за выбор. Т.е. чтобы его можно было включать/выключать. Вообще, мне кажется что приложение должно потреблять ресурсы настолько насколько оно полезно, а задержки по выполнению могут должны быть предсказуемы. С другой стороны во многих случаях освобождение памяти усложняет программу, и требует излишнего контроля, как следствие место для потенциальных ошибок. Но тупо использовать всегда и везде считаю неэффективным. Есть разные стратегии управления памятью, например один владелец, остальные пользователи. Владелец освобождает память. Или же все имеют равные права, освобождаем как только никому не нужен. Или же некая связная группа, которая должна уничтожаться целиком. Уничтожение объекта связанно с освобождением всех ресурсов, не только памяти, тут же на лицо имеем искусственное разделение. Память отдельно, прочие ресурсы отдельно. Это нелогично.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
||||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Логично. В высокоуровневых современных языках, рантайм которых основан на ВМ, управлять памятью вручную очень нерационально. В том числе с точки зрения скорости работы. GC достаточно продуманный механизм. Ну а так - всякие Marshal.GlobalAlloc и пр. никто не отменял.. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Одно другому не мешает. Если я явно говорю удали, то оно должно удалиться. Зачем мне ждать пока прога скушает 100 Мб и после этого начнет чесаться о памяти? У меня может быть связанная группа объектов, для ее разруливания не нужно много мозгов, нужно просто взять и освободить. Я например захочу сделать для нее некий пул. Только для этой группы. Когда понадобиться я тупо возьму освобожу всю память одним махом и попутно освобожу внешние ресурсы. На крайний случай я бы хотел иметь возможность создавать несколько таких сборщиков с разными настройками управления памятью. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Lazin |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
уточню, под выбором, я имею ввиду самостоятельную реализацию механизма управления памятью, например смарт-поинтеры в С++, а не тотальное включение/выключение GC для всей программы
вот именно, скорее всего, твой код работает с объектами, а не с участками памяти
очень даже логично, ты знаком с концепцией аллокаторов в STL? память может быть повторно использована, либо, участок памяти может не принадлежать какому-то одному объекту Добавлено через 6 минут и 37 секунд
ну, удаление объекта != освобождение памяти, если твоя программа работает под управлением современной ВМ, то создание удаление объектов - очень дешево, намного дешевле чем выделение - освобождение памяти в куче лично мне, лишь однажды это потребовалось на самом деле было это так, приложение должно было в real time делать разные вещи, скажем 1000 раз в сек. после каждого такого действия, система должна была возвращаться в исходное состояние, поэтому, я просто выделял один большой участок памяти, а затем, используя аллокаторы, создавал в нем кучу объектов, затем, когда вычисления были выполнены, этот блок памяти просто помечался как свободный но это исключительный случай |
||||||||
|
|||||||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ну.. Вообщем-то я уже говорил - никто не мешает использовать интероп-методы. Это раз. Второе - есть C++/CLI. Сорри за привязку к дотнету - я говорю про суть. Ведь очевидно, что, если GC впринципе имеет место быть, он должен хранить "свои" объекты. А твой пул - нет. Поэтому это отдельный тип объектов, живущий по своим законам. Со внешним миром он должен общаться только через конкретный интерфейс, доступа (прямого) к выделеной памяти очевидно он не должен давать..
Собственно главная проблема классических "идеальных" смарт-поинтеров в С++ - это именно производительность. Они жутко медлены. По сравнению с полноценным GC. Добавлено через 7 минут и 11 секунд Ах, да - думать о памяти приходится, хотя и крайне редко и при наличии GC. Если мы знаем, что собираемся выполнить операцию, которой может понадобится дофига памяти (какие-нибудь глобальные маппинги там хравнить, например, придётся) - то можно явно запустить сборку мусора перед этой операцией. Чтобы сама операция была, условно говоря, непрерывной. Но опять-таки (как всегда) думать об это заранее - явно не стоит.. А ещё приходится явно вызывать релиз каждого COM-объекта, при использовании OLE-автоматизации на server-side. Но это минус .Net VM, а не объективная необходимость. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Типичная задача для GC. Просто я хотел сказать что GC много чего закрывает, но не все, это лишь одна стратегия владения. Это называется подстраиваться под язык. Сужает мышление и делает его более плоским. С ростом числа портативных компов, ресурсы снова имеют значение. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
+1 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
GC не занимается ни в коем случае постоянным подсчётом ссылок. Подсчёт производится, но только когда это нужно. Основываясь на том, что информация обо всех объектах (о стеке, о статическех филдах и т. д.) доступна для ВМ. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Я этого не говорил. Речь шла об определении времени жизни объекта с многими владельцами. Эту стратегию отлично закрывает GC, не в пример SharedPtr. Вот только памяти все это жрет... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |