java內存

1、棧區:由編譯器自動分配釋放,具體方法執行結束後,系統自動釋放JVM內存資源。

其作用有保存局部變量的值,包括:1.用來保存基本數據類型的值;2.保存類的實例,即堆區對象的引用。也可以用來保存加載方法時的幀。

2、堆區:一般由程序員分配釋放,JVM不定時查看這個對象,如果沒有引用指向這個對象就回收。

其作用爲用來存放動態產生的數據,包括new出來的實例,字符數組等。注意創建出來的對象只包含屬於各自的成員變量,並不包括成員方法。

因爲同一個類的對象擁有各自的成員變量,存儲在各自的堆中,但是他們共享該類的方法,並不是每創建一個對象就把成員方法複製一次。

3、代碼區:存放程序中方法的二進制代碼,而且是多個對象共享一個代碼空間區域。

4、數據區:用來存放static定義的靜態成員。

5、常量池:JVM爲每個已加載的類型維護一個常量池,常量池就是這個類型用到的常量的一個有序集合。包括直接常量(基本類型,String)和對其他類型、方法、字段的符號引用。池中的數據和數組一樣通過索引訪問。由於常量池包含了一個類型所有的對其他類型、方法、字段的符號引用,所以常量池在Java的動態鏈接中起了核心作用。
常量池存在於堆中

  1. 如何比較兩個字符串?用“=”還是equals

簡單來說,“==”是用來檢測倆引用是不是指向內存中的同一個對象,而equals()方法則檢測的是兩個對象的值是否相等。只要你想檢測倆字符串是不是相等的,你就必須得用equals()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章