前言
1.每一個方法執行時,都有一個獨立的記憶體空間,給記憶體空間在方法執行完畢之後,随之被回收。這個入地的記憶體空間稱之為棧幀。
2.堆存放的是目前java程式執行時共享資料。在堆中,如果一個對象沒有被變量指向,該變量就符合垃圾回收機制的條件。
正文
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-AXbi5SYhNGNkZTYjFWMxQDMxATO1IGN1kDMzczM0czYjFmY18CX3AzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.bmp)
1.方法區:用來存儲代碼。将.class檔案加載到記憶體中,并存儲在方法區
2.棧:用來存儲局部變量,形參,方法的傳回值,中間運算結果
3.堆:成員變量,數組對象,方法的引用
4.本地方法區:存儲連結本地方法相關的代碼
5.執行過程:
執行了java指令之後,classloader将.class檔案,加載到記憶體中并存儲在方法區。
然後JVM調用main方法,順次執行代碼。
将局部變量存儲在棧區中,将引用變量是指向内容存儲在堆區中。
引用變量所指向的空間,用來存儲hashcode碼,順次執行到mian方法完畢。
再通過classLoader将.class檔案内容在JVM所占用的空間全部解除安裝。