以下序列为我提供了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忘记我的 我告诉它的对象。
答案 0 :(得分:1)
您可以做的第一件事是停用未使用的仆人,* poa.deactivate_object() *。知道什么时候可以停用仆人。
最好的意思是实施ServantManager并实施一些超时政策。
不要忘记POA policies。
答案 1 :(得分:0)
无论何时引用Corba对象,它的内部引用计数都会增加1。这类似于Java垃圾收集器机制。
这意味着只有在myObj
,ior
和href
被垃圾回收时才会对ref
进行垃圾回收。
还可以选择手动减少myObj的Corba引用计数,但不建议这样做,因为这样会破坏Corba的引用计数机制并导致不可预测的行为。