Flyingis

Talking and thinking freely !
Flying in the world of GIS !
随笔 - 156, 文章 - 16, 评论 - 589, 引用 - 0
数据加载中……

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-09 14:10 Flyingis 阅读(3667) 评论(1)  编辑  收藏 所属分类: ArcEngine

评论

# re: AE92 for Java 中手动释放 COM 对象  回复  更多评论   

能不能写一篇 网络分析的java。我想写一个开源的类似arcserve的程序
2008-01-17 09:38 | 阿笨

只有注册用户登录后才能发表评论。


网站导航: