2017-10-17 162 views
0

userText將是不同語言的7000個字符的字符串。 我想知道如何執行此代碼後,垃圾回收字符串。假設在unescapeHtml4 userText被分配了一個新值並且在替換之後有相同的事情。Java 8字符串垃圾回收

上一個userText字符串會發生什麼情況。他們會在字符串池中或將被垃圾收集器刪除。

String userText = context.getRequestParameter("addedText"); 
if (someCondition) 
{ 
    userText = StringEscapeUtils.unescapeHtml4(userText)); 
} 
else 
{ 
    userText = userText.replace(charsequence1, charsequence2); 
} 

- 使用userText一些邏輯---

+2

7000個字符遠離「大」,因爲它可以得到。 – luk2302

+0

@ luk2302約6999?或者... 6998(這可能會持續一段時間):) –

+0

@AndyTurner:當7000人遠離大時,這些較小的數字也是如此。即使乘以十,也不會使它值得考慮垃圾收集。 – Holger

回答

0
//This String object will live as long as "context" will live 
String userText = context.getRequestParameter("addedText"); //"addedText" goes to a String Pool 
if (someCondition) 
{ 
//This String object will live as long as "userText" variable is accessible 
    userText = StringEscapeUtils.unescapeHtml4(userText)); 
} 
else 
{ 
//This String object will live as long as "userText" variable is accessible 
    userText = userText.replace(charsequence1, charsequence2); 
} 

動詞 「活」 是指物體的存在之前,GC將要殺死它;-)

+0

,只要應用程序啓動,context.getRequestParameter(「addedText」)中的文本就會在字符串常量池中。 GC不會從SCP中移除? –

+1

德米特里寫道,「addedText」將在那裏,而不是'context.getRequestParameter(「addedText」)'。 – Tom

+0

哦,對不起,我的疑問是SPC中的所有字符串都會發生什麼,這些字符串來自上下文或從unescapeHtml4獲取的字符串或替換方法。他們將在SPC中,直到應用程序正在運行。 –