Расположение объекта Java RMI в памяти - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть отношения с клиентом RMI-сервера (каждый из которых работает в отдельной JVM), и RMI-сервер создает большой объект и возвращает его клиенту RMI.После того, как это сделано, какой JVM (сервер или клиент) владеет фактической памятью для этого объекта?Если объект передается между JVM, как это делается?Это включает в себя удар по диску или есть какая-то магия, которая делает его очень быстрым?

Спасибо

1 Ответ

2 голосов
/ 07 апреля 2011

Это зависит от того, является ли этот большой объект удаленным объектом - реализует ли он косвенно java.rmi.Remote и экспортируется - или это обычный сериализуемый объект, и в этом случае он копируется от одной JVM к другой. Если это первое, то оно всегда остается в той JVM, которая его создала. Если это позднее, то оно копируется из одного в другое, когда оно передается в качестве аргумента удаленному методу или возвращается из вызова удаленного метода. Копии являются обычными обычными объектами Java и подлежат сборке мусора с обеих сторон в соответствии с обычными правилами.

...