Java专门为String类设计了一个缓存池intern pool,intern pool是在方法区中的一块特殊存储区域,当我们通过 String str="yiyige" 这样的方式来构造一个新的字符串时,String类会优先在缓存池中查找是否已经存在内容相同的String对象。如果有则直接返回该对象的地址引用,如果没有就会构造一个新的String对象,然后放进...
Stringaaa="fff";Stringbbb=newString("fff");// 此时aaa和bbb的引用不同,但是值相同//而synchronized(aaa)和synchronized(bbb)是不会产生互斥锁的,因为aaa和bbb此时不是同一个对象;//如果此时执行:aaa.intern();// 那么aaa和bbb就是一个对象了(注意只是执行了aaa.intern()没有执行bbb.intern())// 所以...
intern()是java.lang.String对象中的一个有趣的功能。该intern()函数从应用程序中消除了重复的字符串对象,并有可能减少应用程序的整体内存消耗。在这篇文章中,让我们更多地了解这个intern()功能。1. 功能如何String intern()运作?在 Java 堆内存中,维护了一个字符串对象池。当您在字符串对象上调用intern()函...
总之,String#intern()方法是一个有用的工具,可以帮助优化Java应用程序的内存使用和性能。
String.intern() String.intern() 方法用于在字符串常量池中查找是否存在与指定字符串相等的字符串。 如果找到了,就返回该字符串的引用;否则,就在字符串常量池中创建一个新的字符串对象,并返回对它的引用。 这个方法对于避免创建重复的字符串对象非常有用,特别是在处理大量字符串数据时,可以显著减少内存使用。
String 的intern()是一个用于字符串添加到字符串常量池中,它的作用是:当调用intern()方法时,如果...
*/publicnative Stringintern(); 其实上面文档说的还是比较清楚的,当该方法被调用时,如果JVM内部维护的string pool中已经存在和这个string内容相同的string,就返回pool中的string,否则的话,就会先把这个string放入pool中,然后再返回这个string。 不过,为了加深对该方法的理解,我们还是从源码角度再看下。
运行时数据区中的方法区有一个常量池,但是发现在JDK1.6以后常量池被放置在了堆空间,因此常量池位置的不同影响到了String的intern()方法的表现。深入了解后发现还是值得写下来记录一下的。 1.为什么要介绍intern()方法 重用String对象,以节省内存消耗。这么说可能有点抽象,那么就用例子来证明。