成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

classLoader卸載與JVM熱部署

開發(fā) 后端
以下的相關(guān)介紹都是在未使用dcevm的情況。

classLoader的卸載機制

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

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

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

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

內(nèi)存問題

◆ 如果有實例類有對classloader的引用,perm區(qū)class將無法卸載,導(dǎo)致perm區(qū)內(nèi)存一直增加,進而導(dǎo)致perm space error

  1. public static Map pool = new HashMap(); 
  2. public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ 
  3. for (int i=0;i<10000000;i++){ 
  4. test(args); 
  5.  
  6. public static void test(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { 
  7. ClassLoader cl = new MyLoader(Main.class.getClassLoader()); 
  8. String className = "RealPerson"
  9.  
  10. @SuppressWarnings("unchecked"
  11. Class<Person> clazz = (Class<Person>) cl.loadClass(className); 
  12. Person p = clazz.newInstance(); 
  13. p.setName("qiang"); 
  14. pool.put(System.nanoTime(), p); 
  15. cl = p.getClass().getClassLoader(); 

推測:

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

 

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

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

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

原文鏈接:http://www.cnblogs.com/redcreen/archive/2011/06/02/2068758.html

【編輯推薦】

  1. JVM分代垃圾回收策略的基礎(chǔ)概念
  2. 高手深度解析:JVM是什么
  3. Java七步創(chuàng)建以JDBC連接數(shù)據(jù)庫的程序
  4. 面試Java前必須了解的10個概念
  5. Java中關(guān)于OOM的場景及解決方法
責(zé)任編輯:林師授 來源: redcreen的博客
相關(guān)推薦

2010-09-25 11:13:18

JVMClassLoader

2010-01-15 20:09:40

centos卸載系統(tǒng)

2024-03-20 14:22:55

遠(yuǎn)程熱部署

2023-09-11 08:31:12

自動配置熱部署DevTools

2023-10-12 22:38:18

SpringBoot熱部署

2021-10-24 06:50:52

AndroidClassLoaderJava

2010-09-27 08:38:49

JVM堆JVM棧

2024-08-09 08:52:26

2021-02-20 06:15:00

項目SpringBoot熱部署

2009-07-10 16:17:41

JVM 1.6

2020-04-15 21:43:22

JVMJavaVMware

2009-06-17 09:40:01

JBoss的class

2010-09-26 09:20:39

JVM1.6JVM1.5

2018-11-01 10:34:37

JVM內(nèi)存配置

2013-05-16 11:16:45

Linux軟件安裝卸載

2023-03-30 08:52:40

DartFlutter

2021-08-05 05:04:50

熱部署模型字節(jié)

2022-03-17 21:42:20

美團插件技術(shù)

2021-11-21 23:03:38

jvm調(diào)優(yōu)虛擬機

2011-11-23 09:39:33

JavaClassLOader機制
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产福利在线播放麻豆 | 欧美久久视频 | 精品欧美视频 | 久久久久久久91 | 欧美精品一区二区在线观看 | 欧美一a一片一级一片 | 成年视频在线观看 | 欧美国产在线一区 | 欧美激情在线一区二区三区 | 色999日韩 | 欧美激情精品久久久久久变态 | 亚洲欧美在线视频 | 亚洲欧美精品一区 | 综合久久久| 日韩中文字幕区 | 国产欧美一区二区精品忘忧草 | 亚洲在线一区 | 99免费在线视频 | 7777精品伊人久久精品影视 | 伊人久久大香线 | 一区二区三区四区视频 | 欧美精品一区二区在线观看 | 一级毛片视频在线 | www.青娱乐 | 国产精品久久久久一区二区 | 久久免费视频在线 | 亚洲视频在线观看 | 日韩免费网站 | 欧美在线高清 | av高清 | 精品综合久久 | 亚洲精品一区中文字幕 | 亚洲一区二区三区四区在线观看 | 欧美性受xxxx | 亚洲欧美日韩久久久 | 免费成人高清在线视频 | 91视频88av | 亚洲电影一区二区三区 | 久草在线中文888 | 色综合一区二区三区 | 欧美乱人伦视频 |