问题标签 [string-pool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 运行时常量池位置
String 对象存储在堆中。例如:
s1
对象将存储在堆中;
字符串文字存储在字符串常量池中。
s2
对象将存储在字符串常量池中(可能在堆内)。
我听说过运行时常量池。
但我不明白具体会在那里存储什么。和字符串常量池一样吗?或者我应该写什么让它存储在运行时常量池中?
java - intern() 方法对性能有影响吗?
我对该intern()
方法的有用性有些困惑。
这行代码可以消除我的困惑:
上面这行代码会创建多少个对象?如果它将在堆内存和字符串池内存中创建一个对象,那么该intern()
方法如何提高性能?
java - 字符串池是如何用java中的桶来衡量的
在阅读这篇关于字符串池及其多年来的变化的文章时,我遇到了以下声明:
在 Java 7u40 之前,默认池大小为 1009 个存储桶,但该值在最近的 Java 版本中会发生一些变化。准确地说,从 Java 7u40 到 Java 11 的默认池大小是 60013,现在增加到 65536。
那么,字符串池中的存储桶是什么?这些与实习字符串的数量有什么可比性?这个概念是否类似于哈希图中的存储桶?
java - 连接多个字符串时会创建多少个字符串对象?
我在一次采访中被问及将在给定问题上创建的对象数量:
我回答说在字符串池中将创建6 个对象。
3 将针对三个变量中的每一个。
1 将用于str1 + str2
(比方说str
)。
1 将用于str2 + str3
.
1 代表str + str3
(str = str1 + str2
)。
我给出的答案是否正确?如果不是,正确答案是什么?
java - 新创建的字符串在哪里?堆内存还是字符串常量池?
根据 Java,
有两个地方存储字符串。字符串文字池和堆内存根据其创建。我需要知道,当将字符串分配给另一个字符串时,新创建的字符串将存储在哪里?
我已经对堆和字符串池中的字符串类型进行了赋值操作。我得到了这样的结果。
但当,
现在,如果我这样做
相似地,
现在,
以上是我在 IDE 上得到的输出。根据此输出,在字符串池中创建了一个新的 strNew 引用对象,并在堆中创建了一个新的 strNewH 引用对象。这是对的吗?
java - 密码存储在java进程内存中
我正在处理一个问题,即密码存储在 java 进程内存中,因为密码存储在字符串中(因此存储在字符串池中)。我对代码进行了更改以使用 char[]。现在的问题是,我的应用程序正在通过 POST CALL 使用另一个服务,同时设置:
conn.setRequestProperty(key, headers.get(key));
我必须将 char[] 转换为字符串,从而在字符串池中创建一个条目。那么有没有办法处理这个问题,即无论密码不应该存储在进程内存中,还是在最坏的情况下,任何方法都可以最大限度地减少其在字符串池中的生存时间。
java - 如果从方法返回值,字符串池是否有效?
我对Java中的字符串池有一些了解。网络中的所有示例都与显式创建变量有关。但是如果我从方法返回硬编码字符串会发生什么。是使用字符串池还是会为每个方法调用一次又一次地创建字符串。我找不到有关此案的任何信息。
我有这样的例子:
常量示例:
我想知道,我的第一个案例是使用字符串池吗?哪种情况会更快?
java - Java:如何在不膨胀字符串池的情况下读取文件?
请看下面的代码片段:
如您所见,文件的每一行都被读取并存储在“line”变量中。由于 'line' 是字符串类型,它的内容存储在字符串池中。存储在字符串池中的字符串不会被 Java 垃圾收集器收集,而是在程序的整个生命周期内都保留在那里。
如果文件非常大,字符串池可能会膨胀。您知道如何在不将所有行都存储在字符串池中的情况下读取文件吗?我只是将文件行存储为任何对象,这意味着它会在不需要时从堆中删除。
java - 同一变量的堆内存分配
以上语句将在堆上创建两个对象,还是 jvm 返回相同的对象?提前致谢
java - 为什么相同的实习字符串文字在此 java 代码片段中有多个值?
我找到了这个线程这个 Java 代码片段是如何工作的?(字符串池和反射)谈论使用反射改变字符串的值。
我完全理解这个技巧,但稍作改动,它就不再像预期的那样工作了。
你能解释一下这段代码发生了什么吗?
.
上面的代码打印:
你好再见
假
为什么字符串litteral“Hello”在Parent类中引用“Bye bye”但在Child类中引用“Hello”?