一.JVM內存模型
JVM內存模型可以從進程生命周期和線程生命周期
1.線程生命周期
每個線程都會有自己各自一份數據,不會存在線程安全問題
1.程序計數器
指示當前線程執行的字節碼指令的行號,以便線程執行時可以回到正確的位置
2.虛擬機棧
線程私有的,與線程在同一時間創建。管理JAVA方法執行的內存模型。每個方法執行時都會創建一 個楨棧來存儲方法的的變量表、操作數棧、動態鏈接方法、返回值、返回地址等信息。方法執行完畢后,將其出棧。
3.本地方法棧
與虛擬機棧類似,但是執行的是本地的方法(不是java語言編寫的)
2.進程生命周期
進程里的數據會被當前所有的線程共享,會存在線程安全問題
1.堆
存放對象實例和數組,是垃圾回收的主要區域,分為新生代和老年代。
新生的對象放入Eden區中,經GC后放入S0或S1,再經GC后放入之前未放入的S1或S0(總保持一個為空),直至達到老年代的臨界值,放入老年代

2.方法區
線程共享的,用于存放被虛擬機加載的類的元數據信息,如常量、靜態變量和即時編譯器編譯后的
代碼。