java虛擬機內存一般分爲以下5部分:
程序計數器:可以看做當前線程所執行的字節碼的行號指示器。java虛擬機在執行多線程時,同一時刻只能執行一個線程的一條指令,固程序計數器是記錄對應線程所執行到的位置,也就是說每個線程要對應一個程序計數器。如果線程執行的是java方法,計數器顯示的是行號,如果執行的是native的時候,則顯示undefinded,該區域還是唯一一個java虛擬機中沒規定任何內存溢出的區域。
java虛擬機棧:也就是經常說的棧內存,存儲局部變量,其中包括(8大基本數據類型,對象的引用變量等),在編譯時完成分配。
本地方法棧:與java虛擬機棧類似,不過處理的是native方法。
java堆:存放對象的實例,垃圾回收機制主要負責的區域,當內存不足時,爲拋出OutOfMemberError的異常,屬於線程共享。
方法區:主要存放類信息和常量,靜態變量