Язык SQL

Организация информации в виде файлов


На этом примере видно, что объектный поток содержит информацию, необходимую для чтения потока, создания нового объекта соответствующего типа и правильной инициализации его полей. В данном случае для инициализации полей необходимо также создать два объекта String.

Дальнейший анализ показывает, что сериализованные объекты являются в некоторой степени оптимизированными. Файл содержит три объекта Movie, но описание класса Movie появляется лишь однажды. Можно заключить, что типы объектов в файле указываются лишь один раз. Дополнительные описания классов появятся, если другие классы будут добавлены в файл.

Член movield второго находящегося в файле объекта класса Movie, 0x000003db, расположен в байте 0x8d. Член title этого объекта, Duck Soup, находится по адресу 0×99, а длина этого поля, 0×0009, находится по адресу 0×97.

Создается впечатление, что значение члена genre для Duck Soup пропущено. Однако объекты Movie для Animal House и Duck Soup были созданы с одним и тем же литералом типа String в качестве значения для genre. Изучение объектов в памяти показывает, что оба поля genre указывают на один и тот же объект типа String. Этот объект типа string, имеющий значение comedy, записан в файле только один раз. Следовательно, значение жанра второго объекта класса Movie представлено как ссылка на первое появление этой строки. Это может служить иллюстрацией того, как объекты-дубликаты представляются в объектных потоках.

Комментарии закрыты