簡體   English   中英

Java中的字符串內存分配

[英]String memory allocation in java

在Servlet類中,我正在檢查

if(“ Mail” .equals(request.getParameter(mode))||“ Chat” .equals(request.getParameter(mode))){}

我的問題是關於為“郵件”和“聊天”字符串分配的內存。 它將為對此servlet的每個請求創建新的字符串對象。 那GC呢?

不,它不會每次都創建一個新對象。 字符串常量是被嵌入的 -它們僅創建一次並放入一個特殊的池中。

它不僅不會在每次運行代碼時都創建新的字符串,而且如果您在代碼的其他位置使用常量“ Mail”或“ Chat”,它們也會使用相同的字符串對象。

在Java語言規范的第3.10.5節中

每個字符串文字都是對String類(第4.3.3節)的實例(第4.3.1節,第12.5節)的引用(第4.3節)。 字符串對象具有恆定值。 使用String.intern方法,對字符串常量(或更一般地說,是常量表達式的值(第15.28節)的字符串)進行“ interned”,以便共享唯一的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM