Java的String#intern()方法是如何实现的?
我试图查看Java的String#intern()
方法,但它是public native String intern();
一般来说,interning是如何实现的?在字符串的情况下?
I tried to look at Java's String#intern()
method, but it's public native String intern();
In general, how is interning implemented? In String's case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于 Sun Java,从
JVM_InternString
开始,位于jvm.cpp
。从技术上讲,实际的 String 方法位于java/lang/String.c
,但它立即调用JVM_InternString
。您可以继续symbolTable.cpp
中的StringTable::intern
。从更抽象的意义上来说,驻留的目的是将等效字符串映射到单个规范字符串。
For Sun Java, start with
JVM_InternString
, on line ~3639 ofjvm.cpp
. Technically, the actual String method is injava/lang/String.c
, but it immediately callsJVM_InternString
. You can continue toStringTable::intern
insymbolTable.cpp
.In a more abstract sense, the purpose of interning is to map equivalent strings to a single canonical one.