classLoader卸載與jvm熱部署

來源:互聯網
上載者:User

      以下的相關介紹都是在未使用dcevm的情況

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的相關介面,來對記憶體的參考關聯性進行了修改

 

完整執行個體下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.