我试图用AdoptOpenJDK的OpenJ9启动一个简单的远程管理界面服务器,但是程序退出时没有出现错误/异常,并且远程管理界面服务器没有启动。完全相同的程序适用于AdoptOpenJDK的HotSpot、JVM和其他oracle变体。
示例代码:
Registry registry = LocateRegistry.createRegistry(9002);
RMIServer myServerInstance = new RMIServer();
<<MyClassStub>>stub = <<MyClassStub>> UnicastRemoteObject.exportObject(myServerInstance, 9002);
registry.rebind("RMIServer", stub);发布于 2020-12-17 15:08:32
OpenJ9开源社区的贡献者证实这是OpenJ9的真正问题。OpenJ9似乎会在创建新服务器后立即将其丢弃。当调用UnicastRemoteObject.exportObject时,将创建一个WeakReference并将其注册到收割器中的ReferenceQueue。当要销毁导出的对象时,收割器检查是否没有更多的导出对象需要跟踪,然后收割器线程将终止其自身,如果没有其他线程保持其活动,则终止VM。
预计此问题将在Java0.24(Java8、11、15) Jan refresh,Release 0.25 (Java16)中得到修复
注:有关最新更新,请关注https://github.com/eclipse/openj9/issues/10503
https://stackoverflow.com/questions/63634650
复制相似问题