Сборка мусора - это способ автоматического управления памятью, при котором программы не освобождают память явно. Вместо этого при исчерпании памяти запускается сборщик мусора, который определяет, какая память больше не нужна, и утилизирует её.
Да
Нет
Сборка мусора - это способ автоматического управления памятью, при котором программы не освобождают память явно. Вместо этого при исчерпании памяти запускается сборщик мусора, который определяет, какая память больше не нужна, и утилизирует её.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
как ты предполагаешь определять какая память больше не нужна?Сообщение от captain cobalt
для сборки мусора необходимо определить когда та или иная переменная/объект вышла/ел из области видимости. сие не представляется возможным по причине отсутсвия понятия переменной/объекта в используемых языках программировая (асм)
Не стоит смеяться. Это очень полезный вопрос. В связи с перекладыванием функций выделения памяти на ось, туда же падает освобождение памяти. Во всяком случае, когда программа самоликвидировалась, необходимо освободить всю принадлежащую ей память.
это безусловно нужно, но довольно далеко от темы данной веткиСообщение от random
А как насчет скорости ?
Ну, на спеке так не развернешься, как пишут... В любом случае кодер знает сколько памяти сожрет его прога. Значит и в запросах можно оперировать реальными числами. Т.е.
1. говоришь, что надо тебе 3х16кб страницы.
2. Ось говорит: на и вешает на эти 3 страницы флажок занято. при этом дает тебе номерок
3. говоришь "у меня всё"
и даешь ей номерок и код "у меня всё"
4. ось говорит ОК и снимает флажки занято.
dll
принцип тот же, нужен тебе dll:
1. берешь список процессов (программ/модулей.. как угодно) оси ищешь название/код (версию) dll (а как еще ?)
2.нету такого. Ага. говришь оси нужна еще скжаем страница под эту dll.
3. ось выдает страницу.
4. грузишь dll туда но в список процессов вносишь ее код/ имя.
сам можешь закрываться, dll останется, но!
на таких ресурсах вешать 1 байт - колво пользующихся. Т.е. 1 прога юзает dll -1 ,3 юзают - 3. никто не юзает - 0 но из списка убирать ресурс только тогда, когда его страницу кому-то отдали.
А вот теперь и сбощик мусора: нет его как такового. Он просто должен в первую очередь выдавать память из под приложений, а если ее не хватает, то из под неиспольз. dll. И обновлять список приложений, ресурсов (процессов) чтоб не юзались ресурсы.
Такой вот простой менеджер памяти с уборкой мусора. Ну а теперь как реализовать реально хотя бы такое... И сколько оно будет жрать ресурсов само по себе ?
Vitamin! Ты тут? А ну говори, что нибудь по этому поводу! Ты ж этим занимался
В теме "Менеджер памяти для многозадачной ОС" я постил спецификацию на менеджер памяти... Ее, походу, так никто и не прочитал - там есть многие вещи (копирование страниц, разыменование указателей). Короче многие пункты этой спецификации пересекаются с обсуждаемыми тут вопросами.
Если не затруднит - всетаки прочитайте, обсудим.
Здесь имеет место другое: подразумевается что указанный ЯВУ работает поверх нормальной системы.Сообщение от random
А тогда сам вопрос отпадает.
С другой стороны, если считать что в этом смысле ЯВУ заменяет собой систему, то получается ещё лучше: вариации на тему "хотел написать оболочку, написал ОСь"
Динамическое управление памятью заключается в том, что имеется большая область памяти, называемая "куча". Программы могут динамически запрашивать память нужного им размера, при этом им выдаётся указатель на выделенную в куче память.Сообщение от elf/2
Сборка мусора требует ссылочной прозрачности всех структур данных. То есть сборщик мусора должен знать, какие переменные являются указателями. Ему необходимо предоставить эту информацию.
Принцип работы сборщика мусора заключается в том, что выбираются все глобальные статические указатели, и помечаются все достижимые из них области памяти. Все недостижимые области памяти являются мусором.
Ассемблер - не очень удобный язык для программирования совместно со сборкой мусора. Следует использовать язык более высокого уровня.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)