靜態方法區
主要存儲:靜態數據、全局static數據和常量 這塊內存在程序編譯的時候就已經分配好 在整個程序運行期間,都會存在
棧區
方法體內的局部變量都在棧上創建 在方法執行結束後,這些局部變量所佔內存都會被釋放
堆區
又稱為動態內存分配區,是指在程序運行時直接new出來的內存,這部分內存在不使用時,就會由Java垃圾回收器負責回收
堆內存/棧內存區別
在方法體內定義的局部變量(基本類型變量/對象的引用變量),都是在方法的棧內存中分配的。 堆內存用來存放所有由new創建的對象和數組,其內存回收由Java垃圾回收器負責。
Java內存的回收機制
不管哪種語言的內存分配方式,都需要返回內存分配的真實地址,也就是返回一個指針,指向內存塊的首地址。垃圾回收器為了能夠正確釋放對象,會監控每一個對象的內存狀況,對它們申請、引用、被引用等狀況都會進行監控。
閱讀更多 JAVA熊 的文章