關於JVM,網上文章鋪天蓋地。有深有淺,有對有錯。這里從我關心的角度,介紹JVM部分原理。或者說很多都是hotspot的實現原理。
一。JVM中內存情況
如下圖。分成三部分:
(1)
線程棧——每個線程都有對應的棧區,調用一個方法,會壓入一個方法幀。
(2)
堆——用於對象的空間的分配。類的實例都是在堆內存上進行分配的。
下文暫稱為JAVA堆
(3)
方法區——方法區底層存儲也是在計算機堆內存上。但是為了與JVM給對象實例分配內存的堆進行區分,才將方法區稱為非堆(non-heap)
換句話說,JAVA堆與方法區都在計算機堆內存上。只不過JAVA堆是留給用戶程序用的,方法區是JVM自己用的

