Flyingis

Fusion Center Lab.

AE92 for Java 中手动释放 COM 对象

    作者:Flyingis 

    用Java进行ArcEngine或ArcGIS Server开发,在底层实际上是用Java调用AO COM对象,ESRI用Jintegra库来解决Java对COM的调用问题,如果Java对象不再使用,Java虚拟机会自动将这些对象回收,然后 Jintegra将这些对象所指的实际COM对象销毁,默认情况下时间间隔是10秒,对于快速大量调用COM对象的操作来说,如在循环中,COM对象往往 得不到及时的销毁,以至于内存报错,这时我们需要手动销毁COM。

    Jintegra释放方法:

    com.linar.jintegra.Cleaner.release(objectRef);

    在ArcEngine和ArcGIS Server中如何释放COM呢?Jintegra为ArcObjects生成了一组proxy类,可以参考 com.esri.arcgis.interop命名空间,经常用的是 com.esri.arcgis.interop.Cleaner,它的release(java.lang.Object anObject)和releaseAll()用来释放指定的或所有的COM对象,同时可以为COM连接和释放增加监听, addConnectionListener(ConnectionListener listener)和allUnreferencedListener(Unreferenced listener)。

    同时可以参考:

    HowTo:  Explicitly release a COM object accessed in a Java application
    J-Integra for COM Document
    Garbage Collection: Releasing Java References to COM Objects
    Java调用COM的中间件Jintegra初探

posted on 2007-07-31 17:01  Flyingis  阅读(1664)  评论(0编辑  收藏  举报

导航