3
我在我的應用程序中使用了一些外部即jar文件庫,不幸的是它本身並沒有正確清理,即第二次從這個庫創建一個對象時它不能按預期工作。我懷疑這是因爲庫創建了一些線程繼續運行,但我不確定。在外部Java庫後清理
有沒有辦法強制徹底清理外部庫創建的混亂?
我在我的應用程序中使用了一些外部即jar文件庫,不幸的是它本身並沒有正確清理,即第二次從這個庫創建一個對象時它不能按預期工作。我懷疑這是因爲庫創建了一些線程繼續運行,但我不確定。在外部Java庫後清理
有沒有辦法強制徹底清理外部庫創建的混亂?
可能有與線程無關的原因。例如,靜態類初始值設定項只在第一次加載類時運行一次。所以,這樣的事情可能是原因:
public class StupidSingleton {
private static StupidSingleton instance;
public StupidSingleton() {
if (instance == null) {
instance = this;
} else {
instance.foo(); // the implementation is irrelevant in this context
}
}
}
不管是什麼,有三種可用鹼性溶液:
代碼!我們需要代碼! – 2010-07-29 18:25:25
我可以提供一些代碼,但它非常特定於我正在使用的庫,這恰好是microemu。基本上,我在一個函數中從這個庫創建一個對象,使用它並從這個函數返回。下一次我調用這個函數(並創建這個對象,等等)它不會如預期的那樣工作 – Demiurg 2010-07-29 18:30:13
您可能需要考慮實現某種嵌套類加載器,您可以實例化並訪問這些類,儘管如此,並且在完成時可能會被銷燬,也許OSGI 。 但是這可能會增加每次通話的開銷。 你不能擺脫圖書館或找到其他東西來取代它嗎? – crowne 2010-07-29 18:31:04