【发布时间】:2021-08-03 04:38:33
【问题描述】:
object Keys {
@Singleton
const val KEY_Q = "question"
@Singleton
const val KEY_ID = "quesid"
}
我在我的单例类中使用带有许多字符串变量的单例注释。我想问一下,默认情况下,字符串变量存储在常量字符串池中,并且在更新过程中,JVM会在字符串池中检查相同的变量是否可用,如果是,则返回相同的引用创建一个新的。
现在我想问一下,当我们将 singleton annotation 与字符串变量一起使用时,这个过程是否同样有效。如果是的话,那么使用带有这些带有不同变量的注释的类对我有什么好处。我是单身新手,请详细描述。谢谢
【问题讨论】:
-
注释无关。字符串文字总是在池中。
-
会占用同样多的内存吗?实际上,我希望每次都使用相同的变量,而不是创建相同的新引用。这里可以吗?
-
1) 内存量也无关紧要。 2)你有 3 个不同的变量,所以很明显将使用 3 个变量。但这是你的意思吗?变量和值是不同的东西。
-
你想多了。这里的字符串每个可能占用 30 或 40 个字节。您的整个程序可能使用数百万……甚至数十亿字节。 30 或 40 个字节“浪费”(在单例上)绝对没有区别。继续。想想一个真正重要的问题......
-
先生,这对我很重要。我刚刚分享了一个较小的代码块。我想澄清我对此的疑问。能回答就好了。