Допустим, есть структура данных обобщенное дерево, которые может хранить объекты разных типов. Есть ли какая-нибудь функция в Оберонах, которой можно, например, передать указатель на вершину дерева, а она вернет количество памяти занимаемой деревом, если подсчитать размеры всех записей, а также вернет размер фактически занимаемой памяти с учетом служебных данных для GC и с учетом округлений блоков памяти в большую сторону. В принципе для дерево такую функцию не сложно написать и самому. Немного сложнее, это сделать, если есть циклические ссылки. В этом случае нужно как-то помечать, какие ссылки мы уже прошли, а какие еще нет. В принципе тоже можно самому сделать, но у GC уже должна быть служебная память для пометки того, просматривали этот блок или нет. Поэтому такую функцию рационально делать на уровне GC. И меня интересует есть ли в какой-нибудь системе уже такая функция или нет?
|