第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

用java卸載類?

用java卸載類?

素胚勾勒不出你 2019-06-17 17:06:04
我有一個(gè)自定義的類加載器,這樣桌面應(yīng)用程序就可以從我需要交談的AppServer動(dòng)態(tài)開始加載類。我們這樣做是因?yàn)樾枰@么做的罐子數(shù)量是荒謬的(如果我們想要運(yùn)送它們的話)。如果不在運(yùn)行時(shí)從AppServer庫動(dòng)態(tài)加載類,則還會(huì)出現(xiàn)版本問題。現(xiàn)在,我遇到了一個(gè)問題,我需要與兩個(gè)不同的AppServers交談,發(fā)現(xiàn)根據(jù)我首先加載的類,我可能會(huì)嚴(yán)重崩潰…是否有任何方法可以強(qiáng)制類的卸載而不實(shí)際殺死JVM?希望這是有意義的用java卸載類?
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

可以卸載類的唯一方法是使用的類加載器是垃圾收集。這意味著,對每個(gè)類和類加載器本身的引用都需要遵循dodo的方式。

解決問題的一個(gè)可能的解決方案是為每個(gè)JAR文件配備一個(gè)ClassLoader,為每個(gè)AppServers配置一個(gè)ClassLoader,將類的實(shí)際加載委托給特定的Jar類加載器。這樣,您就可以為每個(gè)App服務(wù)器指向不同版本的JAR文件。

不過,這并不是小事一樁。OSGi平臺(tái)正努力做到這一點(diǎn),因?yàn)槊總€(gè)包都有不同的類加載器,并且依賴項(xiàng)由平臺(tái)解決。也許一個(gè)好的解決辦法就是看看它。

如果您不想使用OSGI,一種可能的實(shí)現(xiàn)是使用JarClassLoader為每個(gè)JAR文件初始化。

并創(chuàng)建一個(gè)新的多類加載器類,該類擴(kuò)展了ClassLoader。這個(gè)類在內(nèi)部有一個(gè)JarClassloaders的數(shù)組(或列表),在fineClass()方法中,將遍歷所有內(nèi)部類加載器,直到找到定義或拋出NoClassDefFoundException為止??梢蕴峁讉€(gè)訪問器方法來向類中添加新的JarClassloader。對于MultiClassLoader,在網(wǎng)絡(luò)上有幾種可能的實(shí)現(xiàn),因此您甚至可能不需要編寫自己的實(shí)現(xiàn)。

如果為到服務(wù)器的每個(gè)連接實(shí)例化MultiClassLoader,原則上每個(gè)服務(wù)器都可能使用同一類的不同版本。

我在一個(gè)項(xiàng)目中使用了MultiClassLoader的思想,其中包含用戶定義腳本的類必須從內(nèi)存中加載和卸載,并且運(yùn)行得很好。


查看完整回答
反對 回復(fù) 2019-06-17
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

我編寫了一個(gè)自定義的類加載器,可以在不使用GCing類加載器的情況下卸載各個(gè)類。JAR類裝載機(jī)


查看完整回答
反對 回復(fù) 2019-06-17
  • 3 回答
  • 0 關(guān)注
  • 990 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)