Java中的字符串常量池與Java中的堆和棧的區別?
Java常量池不在堆中也不在棧中,是獨立的內存空間管理。
1. 棧:存放基本類型的變量數據和對象的引用,但對象本身不存放在棧中,而是存放在堆(new 出來的對象)或者常量池中(字符串常量對象存放在常量池中。)
2. 堆:存放所有new出來的對象。
3. 常量池:存放字符串常量和基本類型常量(public static final)。
對于字符串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的就存儲在堆中。對于equals相等的字符串,在常量池中永遠只有一份,在堆中有多份。
上一篇什么是NIO框架