簡體   English   中英

如果String Pool內存不足會發生什么?

[英]What happens if String Pool runs out of memory?

如果String Pool上有許多字符串文字並且內存不足,會發生什么。 是否會增加它的大小,如果是的話怎么樣? 如果沒有,如果我嘗試創建更多的字符串文字會發生什么?

第一點 - STRING POOL沒有字符串文字

String Pool是指向String對象的引用的集合。

當你編寫String =“hello”時,它會在堆上創建一個String對象“hello”,並在String Literal Pool中放置對該對象的引用(前提是沒有Object已經存在於名為“Hello”的堆上)

注意 “hello”被 添加到相應類的常量池中 因此,只有在卸載類后才可以對其進行垃圾回收。 所以當卸載類時,Objects會獲得GC

會發生什么?

字符串池是通過一個稱為字符串規范化的過程完成的,這是一個weakHashMap。當沒有其他對鍵或值的引用時,這個weakHashMap會自動清除映射。 .ie字符串將從JVM中收集垃圾。

它的大小是否會增長?

沒有STROL POOL沒有增長的大小 - 這是編譯時間常數

它的大小如何增長?

您需要在編譯時指定-XX:StringTableSize = N ,其中N是字符串池映射大小

最后你的問題:

如果String Pool內存不足會發生什么?

最簡單的答案:你得到java.lang.OutOfMemoryError:java.lang.OutOfMemoryError: Java heap space從Java 7開始的java.lang.OutOfMemoryError:java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: PermGen space舊版java中的java.lang.OutOfMemoryError: PermGen space就像6

暫無
暫無

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

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