回答
有許多s = new String("abc");
s2 = new String("abc");
等將導致該給定的字符串多分配內存。
使用第二種方法 - String s = "abc";
String s2 = "abc";
...將分配內存只有一次,不管你有多少次與這abc
值「新」的字符串。
在兩種方式中,一個對象應該消耗相同的內存大小。
String s = new String("abc");
用於表示此字符串上述分配的空間取決於平臺。對於32位JVM,該字符串佔用大約10個32位字。但是,如果以這種特殊方式創建字符串,那麼這些單詞中的5個將與原始字符串文字共享......至少在標準的Java 6類庫中。
String s = "abc";
這並不是在所有分配的String。相反,它將對現有字符串文字的引用賦予s
。
情況2是否意味着在某個(其他)時間點發生了分配? – NullUserException
好的。但那個「其他時間」是當類(或其他類)被加載時。它在應用程序執行期間只發生一次。情況1也會發生同樣的情況。 –
- 1. 如何知道HCURSOR對象的大小
- 2. Java中String對象的最大大小是多少?
- 3. 如果知道最大堆大小,如何計算最大對象大小?
- 4. Fabric.js對象大小
- 5. JavaScript - 對象大小
- 6. Java'Date'對象大小
- 7. 對象/對象的大小寫約定
- 8. Collada對象的大小
- 9. 獲取對象的大小
- 10. java.awt.Color對象的大小
- 11. 的java對象大小
- 12. Go中對象的大小
- 13. Java對象的大小
- 14. 更改對象的大小
- 15. Oracle Coherence的對象大小
- 16. 對象的大小序列
- 17. Java減小對象的大小
- 18. R:減小rpart對象的大小
- 19. Android/Dalvik中最小的對象大小
- 20. 減小cPickle對象的大小
- 21. 對象爲String
- 22. 我想知道邊界框的對象檢測API大小
- 23. AppFabric的最大對象大小
- 24. 對大型對象的小改動
- 25. 的Java對象 - >的String []爲String []
- 26. 箱大小+子對象
- 27. .NET對象大小限制
- 28. JavaScript'var'數據/對象大小
- 29. Web Api 2對象大小
- 30. jmap和對象大小
什麼語言/框架/環境? –
字符大小或字節大小? –
他們應該是一樣的。兩者在技術上都是相同的東西(AFAIK),除非編譯器可以在Java的.data節中保存abc,而用一些比新的String(「abc」)更小的元數據,但它可能也會做優化。 –