Комментарии 4
Карточный стол — это вы card table так перевели?
Нисколько не умаляю важности и крутости такого рода знаний, однако это немного похоже на то «Как преодолеть трудности которые вы сами себе создали», т.е. выбираем язык со сборкой мусора и потом пытаемся оптимизировать программу для этой не очень прозрачной и сложной штуки. Но я вполне могу понять что есть много случает когда это ок.
А отсутствие сборки мусора приводит к ручному выделению памяти на разных хипах — чтобы преодолеть фрагментацию и дальнейшее освобождение памяти вручную… Я пока что не встречал больших сложностей с .NET, зато много их видел в том же C++
Не вполне понятно. В С++ вы можете реализовать ту стратегию выделения, которая нужна соответствует патерну использования и не пробиваться через логику gc.
Например http-сервис имеет буфер (арену) для каждого запроса. Обработчик использует ее для своих нужд и просто забывает про нее после окончания запроса — память переходит следующему запросу. Получается стратегия выделения динамической памяти, которая не требует обращений к malloc/free в пределах запроса (очень простые операция выделения/освобождения).
Бывает что паттерн работы с памяти более сложный, например, широко известная проблема с фрагментацию памяти в вроде Firefox. Однако аналоги на managed языках не показывали какого-то либо преимущества, насколько я знаю.
Например http-сервис имеет буфер (арену) для каждого запроса. Обработчик использует ее для своих нужд и просто забывает про нее после окончания запроса — память переходит следующему запросу. Получается стратегия выделения динамической памяти, которая не требует обращений к malloc/free в пределах запроса (очень простые операция выделения/освобождения).
Бывает что паттерн работы с памяти более сложный, например, широко известная проблема с фрагментацию памяти в вроде Firefox. Однако аналоги на managed языках не показывали какого-то либо преимущества, насколько я знаю.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Оптимизация программ под Garbage Collector