亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Java中字符串內(nèi)存位置詳解

 更新時(shí)間:2016年08月18日 09:14:23   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇基于Java中字符串內(nèi)存位置詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

之前寫過(guò)一篇關(guān)于JVM內(nèi)存區(qū)域劃分的文章,但是昨天接到螞蟻金服的面試,問(wèn)到JVM相關(guān)的內(nèi)容,解釋一下JVM的內(nèi)存區(qū)域劃分,這部分答得還不錯(cuò),但是后來(lái)又問(wèn)了Java里面String存放的位置,之前只記得String是一個(gè)不變的量,應(yīng)該是要存放在常量池里面的,但是后來(lái)問(wèn)到new一個(gè)String出來(lái)應(yīng)該是放到哪里的,這個(gè)應(yīng)該是放到堆里面的,后來(lái)又問(wèn)到String的引用是放在什么地方的,當(dāng)時(shí)傻逼的說(shuō)也是放在堆里面的,現(xiàn)在總結(jié)一下:基本類型的變量數(shù)據(jù)和對(duì)象的引用都是放在棧里面的,對(duì)象本身放在堆里面,顯式的String常量放在常量池,String對(duì)象放在堆中。

常量池的說(shuō)明

常量池之前是放在方法區(qū)里面的,也就是在永久代里面的,從JDK7開始移到了堆里面。這一改變我們可以從oracle的release version的notes里的** Important RFEs Addressed in JDK 7 **看到。

Area: HotSpot
Synopsis: In JDK 7, interned strings are no longer allocated in the permanent generation of the Java heap, but are instead allocated in the main part of the Java heap (known as the young and old generations), along with the other objects created by the application. This change will result in more data residing in the main Java heap, and less data in the permanent generation, and thus may require heap sizes to be adjusted. Most applications will see only relatively small differences in heap usage due to this change, but larger applications that load many classes or make heavy use of the String.intern() method will see more significant differences.
RFE: 6962931

String內(nèi)存位置說(shuō)明

1.顯式的String常量

String a = "holten";
String b = "holten";

•第一句代碼執(zhí)行后就在常量池中創(chuàng)建了一個(gè)值為holten的String對(duì)象;

•第二句執(zhí)行時(shí),因?yàn)槌A砍刂写嬖趆olten所以就不再創(chuàng)建新的String對(duì)象了。

•此時(shí)該字符串的引用在虛擬機(jī)棧里面。

1.String對(duì)象

String a = new String("holtenObj");
String b = new String("holtenObj");

•Class被加載時(shí)就在常量池中創(chuàng)建了一個(gè)值為holtenObj的String對(duì)象,第一句執(zhí)行時(shí)會(huì)在堆里創(chuàng)建new String("holtenObj")對(duì)象;

•第二句執(zhí)行時(shí),因?yàn)槌A砍刂写嬖趆oltenObj所以就不再創(chuàng)建新的String對(duì)象了,直接在堆里創(chuàng)建new String("holtenObj")對(duì)象。

驗(yàn)證一下

/**
 * Created by holten.gao on 2016/8/16.
 */
public class Main {
  public static void main(String[] args){
    String str1 = "高小天";
    String str2 = "高小天";
    System.out.println(str1==str2);//true
    
    String str3 = new String("高大天");
    String str4 = new String("高大天");
    System.out.println(str3==str4);//false
  }
}

返回結(jié)果:

true
false

以上這篇基于Java中字符串內(nèi)存位置詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java不可不知的泛型使用示例代碼

    Java不可不知的泛型使用示例代碼

    這篇文章主要介紹了Java不可不知的泛型使用,本文通過(guò)實(shí)例代碼給大家介紹了java的泛型的基本使用,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot + vue2.0查詢所用功能詳解

    SpringBoot + vue2.0查詢所用功能詳解

    這篇文章主要介紹了SpringBoot + vue2.0查詢所用功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • springboot2.x引入feign踩的坑及解決

    springboot2.x引入feign踩的坑及解決

    這篇文章主要介紹了springboot2.x引入feign踩的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring MVC接口防數(shù)據(jù)篡改和重復(fù)提交

    Spring MVC接口防數(shù)據(jù)篡改和重復(fù)提交

    這篇文章主要為大家詳細(xì)介紹了Spring MVC接口防數(shù)據(jù)篡改和重復(fù)提交,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 使用JWT作為Spring?Security?OAuth2的token存儲(chǔ)問(wèn)題

    使用JWT作為Spring?Security?OAuth2的token存儲(chǔ)問(wèn)題

    這篇文章主要介紹了使用JWT作為Spring?Security?OAuth2的token存儲(chǔ),大家經(jīng)常使用的方法有兩種一種是使用JWT作為Token傳遞,一種是使用Redis存儲(chǔ)Token,資源服務(wù)器本地訪問(wèn)Redis校驗(yàn)Token,需要的朋友可以參考下
    2021-12-12
  • JAVA使用Ip2region獲取IP定位信息的操作方法

    JAVA使用Ip2region獲取IP定位信息的操作方法

    這篇文章主要介紹了JAVA使用Ip2region獲取IP定位信息,ip2region?-?是國(guó)內(nèi)開發(fā)者開發(fā)的離線IP地址定位庫(kù),針對(duì)國(guó)內(nèi)IP效果較好,國(guó)外的部分IP只能顯示國(guó)家,對(duì)java獲取IP定位信息操作過(guò)程感興趣的朋友一起看看吧
    2022-05-05
  • 使用Java程序模擬實(shí)現(xiàn)新冠病毒傳染效果

    使用Java程序模擬實(shí)現(xiàn)新冠病毒傳染效果

    這篇文章主要介紹了用Java程序模擬實(shí)現(xiàn)新冠病毒傳染效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring框架中一個(gè)有用的小組件之Spring Retry組件詳解

    Spring框架中一個(gè)有用的小組件之Spring Retry組件詳解

    Spring Retry 是從 Spring batch 中獨(dú)立出來(lái)的一個(gè)功能,主要實(shí)現(xiàn)了重試和熔斷,對(duì)于那些重試后不會(huì)改變結(jié)果,毫無(wú)意義的操作,不建議使用重試,今天通過(guò)本文給大家介紹Spring Retry組件詳解,感興趣的朋友一起看看吧
    2021-07-07
  • springboot排除某些自動(dòng)配置的操作方法

    springboot排除某些自動(dòng)配置的操作方法

    Spring Boot 提供的自動(dòng)配置非常強(qiáng)大,某些情況下,自動(dòng)配置的功能可能不符合我們的需求,需要我們自定義配置,這個(gè)時(shí)候就需要排除/禁用Spring Boot 某些類的自動(dòng)化配置了,本文給大家介紹springboot排除某些自動(dòng)配置的方法,感興趣的朋友一起看看吧
    2023-08-08
  • Java基礎(chǔ)學(xué)習(xí)之反射機(jī)制原理詳解

    Java基礎(chǔ)學(xué)習(xí)之反射機(jī)制原理詳解

    反射是框架的靈魂,Java框架底層都是用反射機(jī)制+xml配置等來(lái)實(shí)現(xiàn)的,本文將通過(guò)示例詳細(xì)講解Java中的反射機(jī)制,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-03-03

最新評(píng)論