Java運行時的內存分配策略

靜態方法區

主要存儲:靜態數據、全局static數據和常量 這塊內存在程序編譯的時候就已經分配好 在整個程序運行期間,都會存在

棧區

方法體內的局部變量都在棧上創建 在方法執行結束後,這些局部變量所佔內存都會被釋放

堆區

又稱為動態內存分配區,是指在程序運行時直接new出來的內存,這部分內存在不使用時,就會由Java垃圾回收器負責回收

堆內存/棧內存區別

在方法體內定義的局部變量(基本類型變量/對象的引用變量),都是在方法的棧內存中分配的。 堆內存用來存放所有由new創建的對象和數組,其內存回收由Java垃圾回收器負責。

Java內存的回收機制

Java運行時的內存分配策略

不管哪種語言的內存分配方式,都需要返回內存分配的真實地址,也就是返回一個指針,指向內存塊的首地址。垃圾回收器為了能夠正確釋放對象,會監控每一個對象的內存狀況,對它們申請、引用、被引用等狀況都會進行監控。


分享到:


相關文章: