1

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

4

2 回答 2

1

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

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

不要忘记POA 政策

于 2012-02-17T13:28:21.940 回答
0

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

这意味着myObj仅当ior和被垃圾收集href时才会ref被垃圾收集。

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

于 2017-04-02T13:25:41.433 回答