Здравствуйте, AndrewVK, Вы писали:
AVK>4 или 8 килобайт. И я что то не слышал чтобы кто то считал его слишком большим.
Это очень большой размер. Представь что будет, если понадобится миллион мелких независимых объектов, например, для дерева XML-DOM.
MS>>На микроуровне (контейнеры и проч.) — это все-таки слишком дорого.
AVK>Что дорого? А какой размер страницы нужен? 1к, 4 байта, 1 байт, 1 бит?
Наверное, 1 байт.
AVK>А, главное, зачем?
Можно вообразить и помечтать, что память представлет собой файловую систему, типа NTFS...
AVK>Современные менеджеры памяти умеют выделять сразу большой кусок под мелкие выделения и особых проблем с размером страницы нет. Более того — даже если у нас будет эффективная реализация микространиц, все равно в какой то момент у тебя машина ляжет из-за огромных размеров таблицы маппинга.
Ляжет. Но думаю, что это — вопрос времени. После dot-net нам предложат super-dot-net, где вместо существующей сейчас сборки мусора будет еще и дефрагментация.

Шутка!
AVK>Вобще, не все технологии старых машин применимы на сегодняшних. И дело даже не в неправильном векторе развития. Например красивый и простой способ реализации окошек в текстовом режиме для графики не годится и приходится рожать очень сложные графические движки. И если когда нибудь мы вернемся к той модели, то это будет стоить навороченнейших видеоускорителей и огромных объемов набортной памяти. Вобщем не все технологии масштабируемы.
Можно эту мысль по-подробнее? Она весьма интересна.
MS>> Да, было бы конечно круто иметь такую возможность — не надо никаких реаллокаций, просто говоришь — "добавь-ка мне еще памяти". Но не факт, что это было бы лучше. Ключевой момент в автоматической сборке мусора — это именно SQUEEZE, которая четко работает за линейное время.
AVK>Ключевым я бы его называть не стал. Просто один из бенефитов GC. Ключевой момент это гарантия освобождения ненужной памяти.
Именно он и является ключевым. Можно и на C++ сделать модель, гарантирующую освобождение ненужной памяти, с подсчетом ссылок, например. Но много кайфа от этого не будет, наоборот — породит серьезные скрытые проблемы, хоть с той же фрагментацией. Возможность перемещать объекты (при автоматическом отслеживании data integrity) — является фундаментальной во всей схеме управления пямятью в dot-net. И только при наличии такой возможности можно себе позволить роскошь автоматического удаления ненужных объектов. Если не делать squeeze — все очень быстро встанет раком.
AVK>В любом случае даже при современных 2Г адресного пространства проблема его фрагментации стоит перед относительно небольшим процентом приложений, а с переходом на 64 бита такой проблемы просто не станет.
Память больше не ресурс?