2017-10-17 10 views
0

userTextは、異なる言語で約7000文字の文字列になります。 このコードを実行した後に文字列がどのようにガベージコレクションされるのだろうと思いました。例えば、unescapeHtml4のuserTextに新しい値が割り当てられた後、replaceの後に同じものが割り当てられたとします。Java 8 Stringガベージコレクション

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が大きく離れている場合、これらの小さい数字も同様です。それを10倍にしても、ガベージコレクションについて考える価値はありません。 – 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

ああ、申し訳ありませんが、私の疑問は、コンテキストから取得したものか、unescapeHtml4から取得したものか、またはメソッドを置き換えたもののいずれかであったSPCのすべての文字列がどうなるかです。アプリケーションが実行されるまでSPCに入りますか? –

関連する問題