2017-08-31 100 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

謝謝!這正是我所期待的。 –