下面的序列给了我一个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在我告诉它的时候忘记我的对象。
发布于 2012-02-17 21:28:22
您可以做的第一件事是停用未使用的服务程序*poa.deactivate_object()*。问题是知道什么时候可以停用这个servant。
最好的做法是使用一些超时策略实现ServantManager。
别忘了POA policies。
发布于 2017-04-02 21:25:41
无论何时引用Corba对象,它的内部引用计数都会加1。这类似于Java垃圾收集器机制。
这意味着只有当ior、href和ref被垃圾收集时,myObj才会被垃圾收集。
还有一个手动减少myObj的Corba引用计数的选项,但不建议这样做,因为这样会破坏Corba的引用计数机制并导致不可预知的行为。
https://stackoverflow.com/questions/9278606
复制相似问题