Я хотел бы задать очень общий вопрос о технической концепции, о которой я не знаю, существует ли она или она вообще возможна.Концепция «сериализации» полной памяти объекта
Идея заключается в следующем:
У меня есть объект в сборке мусора языка (например, C# или Java). Объекты могут содержать несколько объектов, но ссылки на любые другие объекты, которые не являются подэлементом объектов (или самого объекта), отсутствуют. Теоретически можно получить память, используемую этим объектом, которая, скорее всего, не является связанной частью. Поскольку у меня есть некоторые знания об объектах, я могу найти все ссылочные переменные/свойства и указатели, которые в конце указывают на другой фрагмент памяти (возможно, косвенно, в зависимости от реализации языка программирования и виртуальной машины). Я могу взять эти фрагменты памяти, объединяя их в большую часть памяти (исправляя ссылки/указатели, чтобы они все еще остались нетронутыми). Эта часть памяти, в основном байты, может быть записана в хранилище, например, в базу данных или в кеш redis. На другой машине я мог бы теоретически снова загрузить этот объект и поместить его в память виртуальной машины (возможно, снова исправить ссылки/указатели, если они являются абсолютными и не относительными). Тогда у меня должен быть тот же объект на другой виртуальной машине. Объект может быть настолько сложным, насколько я хочу, может также содержать события или что-то еще, и я мог бы получить состояние объекта, переданного в пылевую виртуальную машину (работающий на другом компьютере). Единственное условие состоит в том, что он не будет содержать ссылок на что-либо вне объектов. И, конечно, я должен знать тип класса объекта на другой виртуальной машине.
Я задаю этот вопрос, потому что хочу поделиться состоянием объекта, и я думаю, что вся эта работа по сериализации - это просто накладные расходы, и было бы очень просто, если бы я мог просто заморозить память и перенести ее на другую виртуальную машину.
Возможно, это возможно, я бы сказал, да, хотя это может быть сложно. возможно, это невозможно с некоторыми VM из-за их архитектуры. Что-то вроде этого существует на любом языке программирования? Может быть, даже в не мусорных сборниках?
ПРИМЕЧАНИЕ: Я не уверен, какие теги должны быть добавлены к этому вопросу, кроме как на языке программирования, также я не уверен, что может быть лучшее место для такого вопроса. Пожалуйста, простите меня.
EDIT:
Может быть, понятие можно сравнить с initrd на Linux или спящего режима в целом.
«Объекты могут содержать несколько объектов, но нет ссылок на какие-либо другие объекты». Это звучит как противоречие со мной. Не могли бы вы пояснить, что вы имели в виду? – svick
Я имею в виду никаких ссылок на внешний мир. Ни один подэлемент объекта не ссылается ни на что другое, кроме подэлементов объекта или самого объекта. – Sjoerd222888
Но этого никогда не может быть, все, что ссылается на объект, является подэлементом по определению. – svick