java每天5道面试题(十八)

1.RMI的stub扮演了什么样的角色?
 
远程对象的stub扮演了远程对象的代表或者代理的角色。调用者在本地stub上调用方法,它负责在远程对象上执行方法。当stub的方法被调用的时候,会经历以下几个步骤:
  • 初始化到包含了远程对象的JVM的连接。
  • 序列化参数到远程的JVM。
  • 等待方法调用和执行的结果。
  • 反序列化返回的值或者是方法没有执行成功情况下的异常。
  • 把值返回给调用者。
 
2.什么是分布式垃圾回收(DGC)?它是如何工作的?
 
DGC叫做分布式垃圾回收。RMI使用DGC来做自动垃圾回收。因为RMI包含了跨虚拟机的远程对象的引用,垃圾回收是很困难的。DGC使用引用计数算法来给远程对象提供自动内存管理。
 
3.RMI中使用RMI安全管理器(RMISecurityManager)的目的是什么?
 
RMISecurityManager使用下载好的代码提供可被RMI应用程序使用的安全管理器。如果没有设置安全管理器,RMI的类加载器就不会从远程下载任何的类。
 
4.解释下Marshalling和demarshalling。
 
当应用程序希望把内存对象跨网络传递到另一台主机或者是持久化到存储的时候,就必须要把对象在内存里面的表示转化成合适的格式。这个过程就叫做Marshalling,反之就是demarshalling。
 
5.解释下Serialization和Deserialization。
 
Java提供了一种叫做对象序列化的机制,他把对象表示成一连串的字节,里面包含了对象的数据,对象的类型信息,对象内部的数据的类型信息等等。因此,序列化可以看成是为了把对象存储在磁盘上或者是从磁盘上读出来并重建对象而把对象扁平化的一种方式。反序列化是把对象从扁平状态转化成活动对象的相反的步骤。
 

猜你喜欢

转载自blog.csdn.net/dream_ling/article/details/79396065