当前位置:首页 > 服务端 > 验证常量池中的字符串仅是符号,第一次用到时才变为对象

验证常量池中的字符串仅是符号,第一次用到时才变为对象

接上文连接:StringTable

测试用例:

/**
 * 演示字符串字面量也是【延迟】成为对象的
 */
public class TestString {
    public static void main(String[] args) {
        int x = args.length;
        System.out.println(); // 字符串个数 2275

        System.out.print("1");
        System.out.print("2");
        System.out.print("3");
        System.out.print("4");
        System.out.print("5");
        System.out.print("6");
        System.out.print("7");
        System.out.print("8");
        System.out.print("9");
        System.out.print("0");
        System.out.print("1"); // 字符串个数 2285
        System.out.print("2");
        System.out.print("3");
        System.out.print("4");
        System.out.print("5");
        System.out.print("6");
        System.out.print("7");
        System.out.print("8");
        System.out.print("9");
        System.out.print("0");
        System.out.print(x); // 字符串个数
    }
}

如何测试呢,我们利用IDEA中的debug模式下的Memory框进行检测

验证常量池中的字符串仅是符号,第一次用到时才变为对象 _ JavaClub全栈架构师技术笔记

这个Memory是用来分析jvm堆中的对象。

引用一下IDEA的官方介绍吧。

Memory官方文档

The Memory view shows you the total number of objects in the heap:

When you step over the code, the Diff column shows how the number of objects changes between the debugger stops, which helps you see how the code you are stepping affects the heap.

Double-click a class name to view all instances of this class:


以Debug模式运行程序

验证常量池中的字符串仅是符号,第一次用到时才变为对象 _ JavaClub全栈架构师技术笔记


验证常量池中的字符串仅是符号,第一次用到时才变为对象 _ JavaClub全栈架构师技术笔记


验证常量池中的字符串仅是符号,第一次用到时才变为对象 _ JavaClub全栈架构师技术笔记

可以发现还是2365,观察程序,因为运行时常量池中已经有了该对象了, 自然不会再重复创建了。

作者:HeliusKing
来源链接:https://www.cnblogs.com/heliusKing/p/12005501.html

版权声明:
1、Java侠(https://www.javaxia.com)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaxia.com/server/124946.html

标签: out of memory
分享给朋友:

“验证常量池中的字符串仅是符号,第一次用到时才变为对象” 的相关文章