2017-08-31 50 views
-1

什么时候分配字符串文字并放入字符串池?具体而言,如果任何代码路径永远不可访问字符串文字,它是否会被分配?何时分配字符串文字

假设你有下面的代码片段:

if(logger.isLoggable(Level.FINEST)){ 
     logger.log(Level.FINEST, "literal"); 
    } 

将“文字”是有史以来分配如果FINEST是不是和从来就不是一个为loggable水平?

+2

请在发帖前[全部搜索](/帮助/搜索)。有关于如何通过JVM加载和处理字符串文字的非常全面的回答,有问题。 –

+1

也许这可以帮助https://stackoverflow.com/questions/15596694/memory-allocation-for-local-string-literals – ziMtyth

+0

@TJCrowder我一直在寻找过去3小时,我没有找到答案对我的问题。如果知道这些,请将其链接到问题。 –

回答

2

JVM spec

一类或接口的运行时间常量池是由Java虚拟机创建的类或接口时(第5.3节)构造。

因此,使用它的代码的可达性与它无关。

+0

谢谢!这正是我所期待的。 –