字符串懒加载的证明

简介: 字符串懒加载的证明

字符串是懒加载的,运行的时候相同的字符串会在串池中保存,怎么去证明这件事呢?其实方法很简单,我们利用Idea中的调试就可以看到内存中对象的状态。

准备代码:

import com.sun.tools.attach.AttachNotSupportedException;
import sun.tools.attach.HotSpotVirtualMachine;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

/**
 * 字符串延迟加载的证明
 */
public class StringLazyLoad {
    public static void main(String[] args)  {

        System.out.println("h");

        System.out.println("a");
        System.out.println("b");
        for(int i=0;i<200;i++){
            System.out.println("a");
        }

        System.out.println("c");
        System.out.println("d");
        System.out.println("e");
        System.out.println("f");

        for(int i=0;i<200;i++){
            System.out.println("a"+i);
        }
        System.out.println("g");
    }
}

直接断点查看字符串的个数,到18行的时候是1227

我们执行到b,字符串的个数是1228,说明是在执行的时候才会加载实例

我们执行到24行,发现字符串实例的个数1229,并没有因为循环的次数增加200个实例

说明我们的字符串对象不是来一次新建一次的。

目录
相关文章
|
14天前
|
JavaScript 前端开发 UED
代码分割和懒加载
代码分割和懒加载
|
4月前
|
算法
【算法】模拟算法——替换所有的问号(easy)
【算法】模拟算法——替换所有的问号(easy)
|
5月前
|
前端开发 JavaScript C++
前端 JS 经典:判断数组的准确方法
前端 JS 经典:判断数组的准确方法
40 0
|
7月前
|
编译器 C++
【C++】string类模拟实现过程中值得注意的点
【C++】string类模拟实现过程中值得注意的点
71 0
|
算法 测试技术 C#
C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例
C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例
|
JavaScript 前端开发
🎖️typeScrpt中如何从验证字符串?
模板文字类型本质上是一种字符串类型。通过定义字符串必须匹配的模式,这些类型提供了一种验证和推断数据的方式。它们是大约三年前在 TypeScript 4.1 中引入的。根据最初的 GitHub PR,以下示例演示了 TypeScript 利用模板文字类型获得的多功能特性。
132 0
|
JSON API 数据格式
利用注解 + 反射消除重复代码,妙
利用注解 + 反射消除重复代码,妙
104 0
检查两个字符串数组是否相等(简单难度)
检查两个字符串数组是否相等(简单难度)
83 0
|
机器学习/深度学习 存储
1719. 重构一棵树的方案数 : 构造 + 验证(合法性 + 非唯一性)
1719. 重构一棵树的方案数 : 构造 + 验证(合法性 + 非唯一性)
|
缓存 Java 程序员
别再问我 new 字符串创建了几个对象了!我来证明给你看!(上)
别再问我 new 字符串创建了几个对象了!我来证明给你看!
125 0
别再问我 new 字符串创建了几个对象了!我来证明给你看!(上)