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 閱讀(3703) 評論(1) 編輯 收藏 所屬分類: ArcEngine