<分区>
我想更深入地了解字符串池。请帮我找到包含此 Java 实现的源类文件。
这个问题更多的是寻找源代码或字符串池的实现来深入研究这个概念,以更多地了解其中一些未知或难以捉摸的东西。通过这种方式,我们可以更有效地使用字符串,或者想出一些其他方法来实现我们自己的垃圾收集,以防我们的应用程序创建如此多的文字和字符串对象。
标签 java
<分区>
我想更深入地了解字符串池。请帮我找到包含此 Java 实现的源类文件。
这个问题更多的是寻找源代码或字符串池的实现来深入研究这个概念,以更多地了解其中一些未知或难以捉摸的东西。通过这种方式,我们可以更有效地使用字符串,或者想出一些其他方法来实现我们自己的垃圾收集,以防我们的应用程序创建如此多的文字和字符串对象。
最佳答案
很抱歉让您失望了,但 Java String-Pool 并不是一个真正的 Java 类,而是在 JVM 中的某个地方实现的,即它被编写为 C++ 代码。
如果您查看 source code of the String class (几乎一直向下)您会看到 intern()
方法是原生的。
您将必须通过一些 JVM 代码才能获得更多信息。
编辑:
一些实现可以在这里找到( C++ header , C++ implementation )。搜索 StringTable
。
Edit2:正如 Holger 在评论中指出的那样,这不是 JVM 实现的硬性要求。所以有可能有一个 JVM 以不同的方式实现字符串池,例如使用实际的 Java 类。尽管我知道所有常用的 JVM 在 JVM C++ 代码中实现它。
关于java - Java是如何实现String池化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35498336/
相关文章:
java - Java Web 框架世界中的 ASP.NET Login 控件相当于什么?
Java : clean up runnable object with socket
java - 当测试并行运行时,Webdriver 对象被覆盖
java - App 引擎数据存储区 : How to implement Posts and Tags without joins?
java - 带有 Spring 引导的“访问控制允许来源”
Java RegEx - 如何将每个 Stringchar 转换为 *?