呼叫"servant_to_reference"后丢弃 CORBA 的仆人



下面的序列给我一个IOR并保留MyObj实例在CORBA(JacORB)内部的某个位置,以便IOR可以在稍后阶段使用:

MyObj myObj = new MyObj(); 
org.omg.CORBA.Object ref = poa.servant_to_reference(myObj); 
org.omg.CORBA.Object href = MyObjHelper.narrow(ref); 
String ior = orb.object_to_string(href); 

我能以某种方式告诉JacORB放弃"myObj"吗(当然,在稍后阶段)?参考资料永久保存在一些Hastable中(在JacORB中),当创建大量条目时wild OutOfMemory在某个时刻出现。我想让雅克布忘记我的对象。

您可以做的第一件事是停用未使用的仆人,*poa.deactivate_object()*。问题是知道何时可以停用仆人。

最好的想法是用一些超时策略来实现ServantManager。

不要忘记POA政策。

每当引用Corba对象时,它的内部引用计数都会增加一。这类似于Java垃圾收集器机制。

这意味着只有当iorhrefref被垃圾收集时,myObj才会被垃圾收集。

还有一个选项可以手动减少myObj的Corba引用计数,但不建议这样做,因为这样会破坏Corba的引用计数机制,并导致不可预测的行为。

相关内容

  • 没有找到相关文章

最新更新