字符串池(String Pool)

作者: 涅小黑 | 来源:发表于2020-03-18 23:52 被阅读0次

    String是引用类型,但在项目中大量使用,JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存空间--String Pool

    例子1

    1 String a = "hello";
    2 String b = "hello";
    3 a == b //true
    
    1. 执行第一句的时候,JVM先去查找String Pool是否有"hello",有的话就返回给a,没有的话创建"hello"对象放到池子里面,并且返回给a
    2. b执行的逻辑跟a一样,所以 a == b 为true

    例子2

    1 String a = new String("hello");
    2 String b = new String("hello");
    3 a == b //false
    
    1. 执行第一句的时候,JVM先去查找String Pool是否有"hello",有的话就不创建了,并且在堆里面创建"hello",把堆里面的实例返回给a;没有的话创建"hello"对象放到池子里面,,并且在堆里面创建"hello",把堆里面的实例返回给a
    2. b执行的逻辑跟a一样
    3. 所以a和b都是拿到堆里面的对象,是不同的实例a == b 为alse

    相关文章

      网友评论

        本文标题:字符串池(String Pool)

        本文链接:https://www.haomeiwen.com/subject/tnbhyhtx.html