什么时候分配字符串文字
When are string literals allocated
什么时候分配字符串文字并将其放入字符串池?具体来说,如果任何代码路径都无法访问字符串文字,它是否会被分配?
假设您有以下代码片段:
if(logger.isLoggable(Level.FINEST)){
logger.log(Level.FINEST, "literal");
}
如果 FINEST 不是也从未成为可记录级别,是否会分配 "literal"?
来自JVM spec:
The run-time constant pool for a class or interface is constructed when the class or interface is created (§5.3) by the Java Virtual Machine.
所以使用它的代码的可达性与它无关。
什么时候分配字符串文字并将其放入字符串池?具体来说,如果任何代码路径都无法访问字符串文字,它是否会被分配?
假设您有以下代码片段:
if(logger.isLoggable(Level.FINEST)){
logger.log(Level.FINEST, "literal");
}
如果 FINEST 不是也从未成为可记录级别,是否会分配 "literal"?
来自JVM spec:
The run-time constant pool for a class or interface is constructed when the class or interface is created (§5.3) by the Java Virtual Machine.
所以使用它的代码的可达性与它无关。