Единственный способ сделать это - использовать собственную виртуальную машину Java и добавить эту функцию. Конечно, код, который вы написали бы, был бы не на Java, а на языке, на котором реализована виртуальная машина. Некоторое время назад Gemstone использовала этот подход для своего механизма объектной базы данных.
Сегодняшние объектные базы данных (я работаю над одной из них) так не делают. Гораздо проще усовершенствовать байт-код для отслеживания доступа к полю и использовать методы отражения или внедрения, чтобы превратить объекты в некую сериализованную форму. Это работает довольно хорошо. Если вы хотите поддерживать запросы, вам все равно придется работать с отдельными значениями полей для их индексации.
Для нас было бы просто невозможно поддерживать виртуальную машину для всех платформ, на которых мы хотим работать. Мы также не могли убедить серьезных клиентов полностью полагаться на свои (банковские) приложения на виртуальной машине, которую мы настраиваем.
Если вы серьезно заинтересованы в создании решения на основе Java VM:
Раньше был интересный исследовательский проект Java для ортогональной прозрачности, называемый «Лес». Вы можете найти старые документы или даже исходный код.
Если вы ищете другой язык для непосредственного извлечения «объектов» из памяти: C ++ позволит вам это сделать. Есть несколько старых объектных баз данных, написанных на C ++, которые используют этот подход.
... но это сумасшедшие вещи, использующие ошибки страниц для загрузки объектов. Подобные объектные базы данных создают плохое изображение. Надеюсь, мы скоро все изменим.