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

基于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)看看吧

前言

之前寫(xiě)過(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é)一下:基本類(lèi)型的變量數(shù)據(jù)和對(duì)象的引用都是放在棧里面的,對(duì)象本身放在堆里面,顯式的String常量放在常量池,String對(duì)象放在堆中。

常量池的說(shuō)明

常量池之前是放在方法區(qū)里面的,也就是在永久代里面的,從JDK7開(kāi)始移到了堆里面。這一改變我們可以從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成員變量與局部變量(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java成員變量與局部變量(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    這篇文章主要介紹了Java成員變量與局部變量的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • java正則表達(dá)式簡(jiǎn)單使用和網(wǎng)頁(yè)爬蟲(chóng)的制作代碼

    java正則表達(dá)式簡(jiǎn)單使用和網(wǎng)頁(yè)爬蟲(chóng)的制作代碼

    java正則表達(dá)式簡(jiǎn)單使用和網(wǎng)頁(yè)爬蟲(chóng)的制作代碼,需要的朋友可以參考一下
    2013-05-05
  • Flink開(kāi)發(fā)IDEA環(huán)境搭建與測(cè)試的方法

    Flink開(kāi)發(fā)IDEA環(huán)境搭建與測(cè)試的方法

    這篇文章主要介紹了Flink開(kāi)發(fā)IDEA環(huán)境搭建與測(cè)試的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java 高并發(fā)一:前言

    Java 高并發(fā)一:前言

    本系列基于煉數(shù)成金課程,為了更好的學(xué)習(xí),做了系列的記錄。 本文主要介紹 1.高并發(fā)的概念,為以后系列知識(shí)做鋪墊。 2.兩個(gè)重要的定理
    2016-09-09
  • spring aop實(shí)現(xiàn)接口超時(shí)處理組件的代碼詳解

    spring aop實(shí)現(xiàn)接口超時(shí)處理組件的代碼詳解

    這篇文章給大家介紹了spring aop實(shí)現(xiàn)接口超時(shí)處理組件,文中有詳細(xì)的實(shí)現(xiàn)思路,并通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • 使用Spring事物時(shí)不生效的場(chǎng)景及解決方法

    使用Spring事物時(shí)不生效的場(chǎng)景及解決方法

    今天介紹一下Spring事物不生效的場(chǎng)景,事物是我們?cè)陧?xiàng)目中經(jīng)常使用的,如果是Java的話,基本上都使用Spring的事物,不過(guò)Spring的事物如果使用不當(dāng),那么就會(huì)導(dǎo)致事物失效或者不回滾,最終導(dǎo)致數(shù)據(jù)不一致,下面我們意義列舉不生效的場(chǎng)景,并給出解決方法
    2023-09-09
  • SpringBoot-RestTemplate實(shí)現(xiàn)調(diào)用第三方API的方式

    SpringBoot-RestTemplate實(shí)現(xiàn)調(diào)用第三方API的方式

    RestTemplate?是由?Spring?提供的一個(gè)?HTTP?請(qǐng)求工具,它提供了常見(jiàn)的REST請(qǐng)求方案的模版,例如?GET?請(qǐng)求、POST?請(qǐng)求、PUT?請(qǐng)求、DELETE?請(qǐng)求以及一些通用的請(qǐng)求執(zhí)行方法?exchange?以及?execute,下面看下SpringBoot?RestTemplate調(diào)用第三方API的方式
    2022-12-12
  • 在idea中顯示springboot面板的方法

    在idea中顯示springboot面板的方法

    這篇文章主要介紹了在idea中顯示springboot面板的方法方便啟動(dòng)調(diào)試,本文通過(guò)代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • java中關(guān)于文本文件的讀寫(xiě)方法實(shí)例總結(jié)

    java中關(guān)于文本文件的讀寫(xiě)方法實(shí)例總結(jié)

    這篇文章主要介紹了java中關(guān)于文本文件的讀寫(xiě)方法,實(shí)例總結(jié)了Java針對(duì)文本文件讀寫(xiě)的幾種常用方法,并對(duì)比了各個(gè)方法的優(yōu)劣及特點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Java實(shí)體類(lèi)中Set按照對(duì)象的某個(gè)字段對(duì)set排序

    Java實(shí)體類(lèi)中Set按照對(duì)象的某個(gè)字段對(duì)set排序

    這篇文章主要介紹了Java實(shí)體類(lèi)中Set按照對(duì)象的某個(gè)字段對(duì)set排序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

肥西县| 凌海市| 南康市| 东光县| 嵩明县| 乐亭县| 大洼县| 南平市| 镇江市| 江北区| 梧州市| 榕江县| 阿克苏市| 清远市| 巴塘县| 探索| 登封市| 定远县| 肇东市| 迁安市| 宁武县| 墨脱县| 宜都市| 山东省| 烟台市| 贡山| 平顶山市| 满城县| 贺兰县| 巴南区| 黄大仙区| 阳西县| 青阳县| 荣昌县| 潜江市| 唐河县| 宝兴县| 茂名市| 宁明县| 乳山市| 盐亭县|