最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java對象不使用時賦值null的意義詳解

 更新時間:2020年03月11日 13:30:37   作者:我太難了008  
這篇文章主要介紹了java對象不再使用時賦值null的意義,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

先看代碼

public class TestDemo1 {
  public static void main(String[] args) {
    if (true) {
      byte[] placeHolder = new byte[64 * 1024 * 1024];
      System.out.println(placeHolder.length / 1024);
    }
    System.gc();
  }
}

idea配置gc日志打印

運行上面的代碼,載圖gc日志

現(xiàn)在我們修改上面的測試代碼,將placeHolder置為null

public class TestDemo1 {
  public static void main(String[] args) {
    if (true) {
      byte[] placeHolder = new byte[64 * 1024 * 1024];
      System.out.println(placeHolder.length / 1024);
      placeHolder = null;
    }
    System.gc();
  }
}

再次運行程序,查看gc日志

由以上載圖日志可以明顯看到二者差別,所以不用對象置為null還是很有意義的。

為啥會造成二者的區(qū)別呢?

這還得從jvm認(rèn)定垃圾的機制:可達性分析說起。

說起這個可達性,首先就得說到根,而“本地變量表”恰恰就可以看成是根。

上面兩段代碼本地變量表是不一樣的。

先看第一段代碼,就是placeHolder沒有置null的“本地變量表 ”

使用javap -v TestDemo1.class

可以看到placeHolder還在本地變量表中,而且它占用slot槽1號位置, 所以jvm認(rèn)為它還是活著的。

然后,我們再看placeHolder =null這段代碼的"本地變量表"的情況,其實它與上面一樣,看不出啥差別。

但是如果我們在placeHolder后面再聲明一個變量

public class TestDemo1 {
  public static void main(String[] args) {
    if (true) {
      byte[] placeHolder = new byte[64 * 1024 * 1024];
      System.out.println(placeHolder.length / 1024);
    }
    String name = "admin";
    System.gc();
  }
}

可以看到name這個變量名將slot槽1號位置占用了,是否可以說明placeHolder沒啥用了呢

而且這段代碼與placeHolder = null的gc日志完全一樣。那么應(yīng)該可以說明,我們聲明的這個String name = "admin" 斷開了棧中placeHolder與堆中實例之間關(guān)系。

而placeHolder =null應(yīng)該也有這個功能。

總結(jié):代碼離開變量作用域時,并不會自動切斷其與堆的聯(lián)系。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 帶你快速搞定java數(shù)組

    帶你快速搞定java數(shù)組

    數(shù)組是相同類型數(shù)據(jù)的有序集合數(shù)組描述的是相同類型的若干個數(shù)據(jù),按照一定的先后次序排列組合而成。其中,每一個數(shù)據(jù)稱作一個數(shù)組元素,每個數(shù)組元素可以通過一個下標(biāo)來訪問它們數(shù)組的聲明創(chuàng)建
    2021-07-07
  • java反射應(yīng)用詳細(xì)介紹

    java反射應(yīng)用詳細(xì)介紹

    本篇文章依舊采用小例子來說明java反射應(yīng)用,因為我始終覺的,案例驅(qū)動是最好的,需要的朋友可以參考下
    2012-11-11
  • 詳解java中的byte類型

    詳解java中的byte類型

    Java也提供了一個byte數(shù)據(jù)類型,并且是基本類型。java byte是做為最小的數(shù)字來處理的,因此它的值域被定義為-128~127,也就是signed byte。下面這篇文章主要給大家介紹了關(guān)于java中byte類型的相關(guān)資料,需要的朋友可以參考下。
    2017-02-02
  • Springboot項目消費Kafka數(shù)據(jù)的方法

    Springboot項目消費Kafka數(shù)據(jù)的方法

    本文詳細(xì)介紹了如何在Spring Boot項目中配置和實現(xiàn)Kafka消費者和生產(chǎn)者,結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • Spring中@Value讀取properties作為map或list的操作

    Spring中@Value讀取properties作為map或list的操作

    這篇文章主要介紹了Spring中@Value讀取properties作為map或list的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • mybatis通過if語句實現(xiàn)增刪改查操作

    mybatis通過if語句實現(xiàn)增刪改查操作

    這篇文章主要介紹了mybatis通過if語句實現(xiàn)增刪改查操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java實現(xiàn)任意進制轉(zhuǎn)換

    Java實現(xiàn)任意進制轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)任意進制轉(zhuǎn)換的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • springboot openfeign從JSON文件讀取數(shù)據(jù)問題

    springboot openfeign從JSON文件讀取數(shù)據(jù)問題

    今天主要說一下在openfeign里讀取JSON文件的問題,我們將測試所需要的數(shù)據(jù)存儲到文件里,在修改時關(guān)注點比較單純
    2018-06-06
  • SpringBoot+Ant Design Vue實現(xiàn)數(shù)據(jù)導(dǎo)出功能方式

    SpringBoot+Ant Design Vue實現(xiàn)數(shù)據(jù)導(dǎo)出功能方式

    這篇文章主要介紹了SpringBoot+Ant Design Vue實現(xiàn)數(shù)據(jù)導(dǎo)出功能方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring Boot集成sa-token的項目實踐

    Spring Boot集成sa-token的項目實踐

    本文主要介紹了Spring Boot集成sa-token的項目實踐,實現(xiàn)了基本的登錄和權(quán)限控制功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評論

济阳县| 张家川| 山东省| 峡江县| 新安县| 聊城市| 商都县| 尖扎县| 合水县| 宣威市| 开封县| 克拉玛依市| 舞阳县| 安多县| 隆化县| 炎陵县| 得荣县| 潼关县| 大兴区| 彭山县| 韩城市| 阿合奇县| 昆明市| 阜新| 扬中市| 达拉特旗| 常德市| 余江县| 长乐市| 额济纳旗| 兰溪市| 阿尔山市| 化隆| 岐山县| 平舆县| 逊克县| 高碑店市| 鸡东县| 罗甸县| 澜沧| 昭苏县|