91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行classLoader卸載與JVM熱部署

發布時間:2021-10-23 17:06:05 來源:億速云 閱讀:686 作者:柒染 欄目:編程語言

本篇文章為大家展示了如何進行classLoader卸載與JVM熱部署,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

classLoader的卸載機制

jvm中沒有提供class及classloader的unload方法.那熱部署及osgi中是通過什么機制來實現的呢?實現思路主要是通過更換classLoader進行重新加載.之前的classloader及加載的class類在沒有實例引用的情況下,在perm區gc的情況下會被回收掉。

perm區gc時回收掉沒有引用的class是一個怎樣的過程呢?

◆ perm區達到回收條件后,對class進行引用計算,對于沒有引用的class進行回收。

◆ classLoader實例什么時候被回收呢?(很有可能會進入old gen).perm區回收一般情況下觸發full gc是否目的就是清除沒有實例引用此classloader?

內存問題

◆ 如果有實例類有對classloader的引用,perm區class將無法卸載,導致perm區內存一直增加,進而導致perm space error

public static Map pool = new HashMap(); public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ for (int i=0;i<10000000;i++){ test(args); } }  public static void test(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { ClassLoader cl = new MyLoader(Main.class.getClassLoader()); String className = "RealPerson";  @SuppressWarnings("unchecked") Class<Person> clazz = (Class<Person>) cl.loadClass(className); Person p = clazz.newInstance(); p.setName("qiang"); pool.put(System.nanoTime(), p); cl = p.getClass().getClassLoader(); }

推測:

osgi的bundle進行熱部署時有個條件:export class 必須是兼容的.否則需要重啟整個應用才會生效,為什么呢?

osgi的export class是被bundle的parent classloader加載的,bundle內部其他類是bundle的classloader加載的,bundle更換后,重新創建classloader,并對bundle進行加載,之前的加載靠jmv gc回收掉。

那osgi 中explort class如果有實例引用的話,是否會導致class無法被gc掉?

如果osgi中沒有做過處理,應該會出現此問題.具體osgi的實現還需要深入研究下,
也許osgi中關于此部分的實現使用了jvm內部的JMTI的相關接口,來對內存的引用關系進行了修改。

上述內容就是如何進行classLoader卸載與JVM熱部署,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

离岛区| 芷江| 博白县| 崇明县| 昌吉市| 东城区| 黎川县| 阿拉善盟| 新郑市| 延津县| 宜丰县| 蚌埠市| 双城市| 汉源县| 开原市| 镇安县| 阿巴嘎旗| 南部县| 台州市| 株洲县| 天祝| 平潭县| 凯里市| 瓦房店市| 岳池县| 通渭县| 额济纳旗| 利津县| 丰都县| 康平县| 化德县| 克什克腾旗| 兴宁市| 遂川县| 界首市| 乡宁县| 东光县| 桐梓县| 县级市| 唐河县| 闸北区|