我读了很多答案,但没有一个真正准确地回答我的问题。
如果我有一个 java 服务在某个端口上运行,客户端连接到它并调用如下方法:
String data = getServiceData("clientKey");
现在我的问题是,这个key(clientKey)会被存储在服务端的String literal pool中吗?通常要存储在常量池中的文字是在编译时计算出来的,但是从 JVM 外部传递的字符串或者可能在读取文件时会发生什么情况?
最佳答案
String 对象在您的客户端被序列化和反序列化并保存在堆内存中。如果你想让它存储在你的字符串池内存中,你应该使用 intern()方法。
String value;
String data = (value =getServiceData("clientKey"))==null?null:value.intern();
关于java - 从java应用程序外部传递过来的String会保存在String池中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185934/