Но рано или поздно все равно ведь нужно просканировать и старое поколение? Суть бд в оперативке в том что там в куче находятся миллиарды объектов. И кстати для такой бд сборщик мусора собственно и не нужен, так как всегда явно определяется когда нужно удалять объекты - неважно сколько их в памяти (например 50 млд объектов которые занимают 4тб) - апи бд всегда явное - создать/обновить/удалить такой-то объект из таблицы. База данных уже знает какие другие объекты ссылаются на этот объект потому что и так занимается индексированием. То есть все что мне нужно так это способ явного удаления объекта из памяти.
Только почему-то языки с gc включая java/go/javascript похоже считают что не нужно давать программисту явно удалять объекты. Тут либо возиться с week-ссылками (я правда не знаю какой у них оверхед и будет ли это работать на терабайтах оперативки) либо пилить свои объекты если хранить все данные в числовом массиве (но например в трекере v8 уже 5 лет висит ишью о невозможности аллоцировать массив больше 4гб)
мне кажется, что для БД GC реально не особо нужен, особено, если важно latency, но есть куча других приложений, где без GC сложно. К упоминавшимся уже lock-free можно добавить функциональное программирование