在调用“servant_to_reference”后从CORBA中丢弃一个仆人

时间:2012-02-14 14:28:17

标签: java corba jacorb

以下序列为我提供了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内),当创建很多条目时,a 在某些时候出现疯狂的OutOfMemory。我希望JacORB忘记我的 我告诉它的对象。

2 个答案:

答案 0 :(得分:1)

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

最好的意思是实施ServantManager并实施一些超时政策。

不要忘记POA policies

答案 1 :(得分:0)

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

这意味着只有在myObjiorhref被垃圾回收时才会对ref进行垃圾回收。

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