欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的類加載與類卸載方式

 更新時(shí)間:2023年12月27日 16:13:39   作者:m0_38063172  
這篇文章主要介紹了Java中的類加載與類卸載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java中的類加載與類卸載

類加載

Java中的代碼都寫在類里面,源代碼(.java文件)經(jīng)過(guò)編譯后會(huì)變成字節(jié)碼(.class文件),當(dāng)Java應(yīng)用程序運(yùn)行時(shí),JVM會(huì)加載要用到的類。

負(fù)責(zé)類加載的是java.lang.ClassLoader的對(duì)象,ClassLoader的對(duì)象會(huì)根據(jù)類的binary name(不知道怎么翻譯,二進(jìn)制名?)來(lái)讀取類的字節(jié)碼,然后把這些字節(jié)碼加載到JVM的方法區(qū)里,同時(shí)會(huì)在heap里面創(chuàng)建一個(gè)Class對(duì)象,這個(gè)Class對(duì)象是類的元數(shù)據(jù)和它的對(duì)象通信的接口。

類在heap中的Class對(duì)象和加載它的ClassLoader對(duì)象之間有強(qiáng)引用。

類卸載

不像類加載,Java中沒(méi)有提供顯式進(jìn)行類卸載的API,但是如果加載類的ClassLoader對(duì)象被垃圾回收器回收的話,這個(gè)類就會(huì)被卸載。

所以我們可以自己實(shí)現(xiàn)ClassLoader,自己加載類,然后對(duì)ClassLoader對(duì)象的引用賦值為null,等ClassLoader對(duì)象剩下的引用數(shù)量為0時(shí)會(huì)被回收,這樣就達(dá)到卸載類的目的了。

什么是類加載?什么時(shí)候卸載?

1.先看一下類的生命周期

加載 – 連接 – 初始化 – 使用 – 卸載

2.加載

類加載,指的是將類的.class文件中的二進(jìn)制數(shù)據(jù)讀入到內(nèi)存中,把它放進(jìn)運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)(Perm區(qū))。

然后在堆區(qū)創(chuàng)建一個(gè)java.lang.Class對(duì)象,封裝這個(gè)類在自身的方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)。

類的加載的最終產(chǎn)品是位于堆區(qū)中的Class對(duì)象,Class對(duì)象封裝了類在方法區(qū)(Perm區(qū))內(nèi)的數(shù)據(jù)結(jié)構(gòu),并且向Java程序員提供了訪問(wèn)方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)的接口。

注意,這是仍舊沒(méi)有生成針對(duì)該類的對(duì)象。后續(xù)對(duì)類的實(shí)例化,會(huì)使用堆內(nèi)存中的Class對(duì)象生成具體的實(shí)例對(duì)象。

3.卸載

如果有下面的情況,類就會(huì)被卸載:

1、該類所有的實(shí)例都已經(jīng)被回收,也就是java堆中不存在該類的任何實(shí)例。

2、加載該類的ClassLoader已經(jīng)被回收。

3、該類對(duì)應(yīng)的java.lang.Class對(duì)象沒(méi)有任何地方被引用,無(wú)法在任何地方通過(guò)反射訪問(wèn)該類的方法。

如果以上三個(gè)條件全部滿足,jvm就會(huì)在方法區(qū)垃圾回收的時(shí)候?qū)︻愡M(jìn)行卸載,類的卸載過(guò)程其實(shí)就是在方法區(qū)中清空類信息,java類的整個(gè)生命周期就結(jié)束了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java EasyExcel面向Excel文檔讀寫邏輯示例詳解

    java EasyExcel面向Excel文檔讀寫邏輯示例詳解

    這篇文章主要為大家介紹了java EasyExcel面向Excel文檔讀寫邏輯示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 教你1秒將本地SpringBoot項(xiàng)目jar包部署到Linux環(huán)境(超詳細(xì)!)

    教你1秒將本地SpringBoot項(xiàng)目jar包部署到Linux環(huán)境(超詳細(xì)!)

    spring Boot簡(jiǎn)化了Spring應(yīng)用的開(kāi)發(fā)過(guò)程,遵循約定優(yōu)先配置的原則提供了各類開(kāi)箱即用(out-of-the-box)的框架配置,下面這篇文章主要給大家介紹了關(guān)于1秒將本地SpringBoot項(xiàng)目jar包部署到Linux環(huán)境的相關(guān)資料,超級(jí)詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Java中Set集合的使用和底層原理解析

    Java中Set集合的使用和底層原理解析

    這篇文章主要介紹了Java中Set集合的使用和底層原理,Set集合的功能上基本上與Collection的API一致, Set集合沒(méi)有擴(kuò)展額外的API,本文通過(guò)示例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-12-12
  • Java中切面的使用方法舉例詳解

    Java中切面的使用方法舉例詳解

    這篇文章主要介紹了Java中切面編程(AOP)的基本概念、原理及實(shí)現(xiàn)方式,AOP通過(guò)將橫切關(guān)注點(diǎn)模塊化為切面,使代碼更易于維護(hù)和擴(kuò)展,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • springBoot 打war包 程序包c(diǎn)om.sun.istack.internal不存在的問(wèn)題及解決方案

    springBoot 打war包 程序包c(diǎn)om.sun.istack.internal不存在的問(wèn)題及解決方案

    這篇文章主要介紹了springBoot 打war包 程序包c(diǎn)om.sun.istack.internal不存在的問(wèn)題及解決方案,親測(cè)試過(guò)可以,需要的朋友可以參考下
    2018-07-07
  • 詳細(xì)總結(jié)Java基礎(chǔ)類和包裝類

    詳細(xì)總結(jié)Java基礎(chǔ)類和包裝類

    近幾天一直在復(fù)習(xí)Java基礎(chǔ)知識(shí),今天就帶大家總結(jié)一下Java基礎(chǔ)類和包裝類,下文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Google Kaptcha 框架實(shí)現(xiàn)登錄驗(yàn)證碼功能(SSM 和 SpringBoot)

    Google Kaptcha 框架實(shí)現(xiàn)登錄驗(yàn)證碼功能(SSM 和 SpringBoot)

    這篇文章主要介紹了Google Kaptcha 實(shí)現(xiàn)登錄驗(yàn)證碼(SSM 和 SpringBoot)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-12-12
  • Spring注解@Transactional失效的場(chǎng)景分析

    Spring注解@Transactional失效的場(chǎng)景分析

    在使用Spring中事務(wù)注解@Transactional時(shí)會(huì)存在幾種場(chǎng)景下該注解失效,即不能按照預(yù)期封裝成一個(gè)事務(wù)操作,于是本文文將對(duì)該注解進(jìn)行學(xué)習(xí)并對(duì)相關(guān)失效場(chǎng)景進(jìn)行分析,需要的朋友可以參考下
    2023-07-07
  • Maven使用方法詳及方式詳細(xì)介紹

    Maven使用方法詳及方式詳細(xì)介紹

    使用maven倉(cāng)庫(kù)的話需要從網(wǎng)上下載maven的包,比如“apache-maven-3.5.4-bin.tar”,下載完成之后解壓,在解壓的文件夾中的conf目錄下的settings.xml文件夾下就可以配置maven遠(yuǎn)程倉(cāng)庫(kù)和本地倉(cāng)庫(kù)的地址
    2022-11-11
  • MyBatis的五種批量查詢實(shí)例總結(jié)

    MyBatis的五種批量查詢實(shí)例總結(jié)

    為了提高代碼的執(zhí)行效率,我們有時(shí)需要采用批量查詢的查詢方法,下面這篇文章主要給大家介紹了關(guān)于MyBatis的五種批量查詢的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評(píng)論