java - RMI理论—— stub 和分布式垃圾收集

标签 java garbage-collection rmi

关于 RMI 理论,我有两个答案。

1) 让我们来看看:

Service impl = new Service();

假设Service是一个远程接口(interface)的实现,它扩展了UniCastRemoteObject;

如果(服务器端)我用上面的代码创建 impl 然后调用:

impl.f();

为了执行 f() ,JVM 使用 stub ?换句话说,f() 将作为远程方法调用?

2) 我一直在寻找分布式垃圾收集,我已经实现了取消引用方法来查看与远程对象关联的计数器何时变为零,它工作正常。 我也实现了 finalize 方法,但是从来没有调用过,你能解释一下为什么吗? 我也尝试解除绑定(bind)远程引用 UnicastRemoteObject.unexportObject(impl,true);但不会调用 finalize。

谢谢

问候

最佳答案

To execute f() , JVM uses stub? In other words f() will be called as remote method ?

没有。但是,如果您通过服务器端的 stub 执行它,它将通过 RMI 执行。无短路。

I have implemented also finalize method, but this is never called, can you explain why?

因为对象没有在本地进行垃圾回收。除了通过 RMI 客户端之外,您可能还有其他引用。 DGC 释放 RMI 对该对象的引用,但它不会释放您自己的引用。 所有 引用必须被释放才能发生本地 GC,即使是它们也不能保证它会发生。

关于java - RMI理论—— stub 和分布式垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17641837/

相关文章:

java - 无法通过 RMI 传递文件

java - 是否有任何 Spring Boot 文档来了解 web mvc 配置的工作原理?

java - 逻辑有问题?

Java 堆空间 Xmx Xms 参数忽略

java - 卸载通过 RMI 传递的类

Java RMI,一个接口(interface)在网络服务器上作为远程发布,但它不应该

java - 将字符串转换为整数 - 如果字符串无效,我应该返回什么

java - Android 扩展 MainActivity

java - GC开销限制异常: Unable to take threads & heap dump

java - 为什么字节数组本身的gc根在mat中?