classLoader解除安裝與jvm熱部署

2022-09-16 00:18:12 字數 991 閱讀 8936

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

classloader的解除安裝機制perm區gc時**掉沒有引用的class是乙個怎樣的過程呢?

記憶體問題

如果有例項類有對classloader的引用,perm區class將無法解除安裝,導致perm區記憶體一直增加,進而導致perm space error

static map pool = new hashmap();

public

static

void main(string args) throws classnotfoundexception, instantiationexception, illegalacces***ception

}public

static

void test(string args) throws classnotfoundexception, instantiationexception, illegalacces***ception

推測:

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熱部署

以下的相關介紹都是在未使用dcevm的情況 classloader的解除安裝機制 perm區gc時 掉沒有引用的class是乙個怎樣的過程呢?記憶體問題 static map pool new hashmap public static void main string args throws cl...

classLoader解除安裝與jvm熱部署

本站 以下的相關介紹都是在未使用dcevm的情況 classloader的解除安裝機制 perm區gc時 掉沒有引用的class是乙個怎樣的過程呢?記憶體問題 推測 osgi的bundle進行熱部署時有個條件 export class 必須是相容的.否則需要重啟整個應用才會生效,為什麼呢?osgi的...

解除安裝ncurses linux 安裝與解除安裝軟體

linux安裝軟體有三種方式 rpm 工具 yum 工具 原始碼包 源 通過編譯器編譯成可執行的檔案 rpm工具使用 首先在vmw 中把光碟連線到linux中 然後進行光碟掛載 root localhost df h 檢視已掛載磁碟的總容量,並已合適的單位顯示 h為gb,目的是為了檢視是不是已掛載 ...