内存中的Java RMI对象位置

时间:2011-04-07 00:34:05

标签: java memory rmi

我有一个RMI服务器客户端关系(每个都在不同的JVM中运行),RMI服务器创建一个大对象并将其返回给RMI客户端。完成此操作后,哪个JVM(服务器或客户端)拥有该对象的实际内存?如果在JVM之间传递对象,那该怎么办?它是否涉及磁盘命中,还是有一些魔法让它超级快?

由于

1 个答案:

答案 0 :(得分:2)

这取决于这个大对象是否是远程对象 - 它是否间接实现了java.rmi.Remote并被导出 - 或者它是否是一个普通的可序列化对象,在这种情况下它是从一个JVM复制到另一个JVM。如果它是前者,那么它总是留在创建它的JVM中。如果它是后者,那么当它作为参数传递给远程方法时,或者从对远程方法的调用返回时,它会从一个复制到另一个。这些副本是普通的Java对象,并且可以根据正常规则在任一端进行垃圾回收。