jvm記憶體分割槽及各區執行緒問題

2022-09-13 01:03:16 字數 726 閱讀 3041

1.堆(heap):主要存放物件的例項也包括陣列,是垃圾管理的主要作用區,是執行緒共享的

2.棧(stack):①虛擬機器棧:描述的是 j**a 方法執行的記憶體模型,每個方法在執行的同時會建立乙個 stack frame (方法執行時的基礎資料結構)用於儲存區域性變數表、操 

作數棧、動態連線、方法出口等資訊;是執行緒隔離的

②本地方法棧:本地方法棧和虛擬機器棧非常相似,只不過本地方法棧是為j**a使用到的native方法服務的

3.方法區(method area):被虛擬機器載入的類資訊、靜態(static)變數,常量(final),即時編譯器編譯後的**等資料。執行常量池是方法區的一部分,class檔案除了有類

的版本、字段、介面、方法等描述資訊之外,還有一項資訊常量池儲存編譯期生成的字面量和符號引用。 執行緒之間共享的

4.程式計數器(pc):是一塊較小的記憶體空間,是當前執行緒所執行的位元組碼的行號指示器。位元組碼直譯器工作時就是通過改變這個計數器的值來選取 下一條需要執行的位元組

碼指令,分支、迴圈、跳轉、異常處理、執行緒恢復等基礎功能都需要依賴這個計數器來完成。(是執行緒隔離的)

綜合有:堆和方法區是執行緒共享的,棧和程式計數器是執行緒隔離的

一 JVM之記憶體分割槽

jvm將執行j a程式的記憶體劃分為不同的資料區域 1.1 程式計數器 程式計數器是記憶體區域中一塊比較小的記憶體空間。它的作用就像是乙個指向正在執行的位元組碼行號的指標。改變計數器的值來指向當前要執行的位元組碼指令。並且由於j a多執行緒也是分配時間片的模式來實現的,在單核處理器過程中,執行緒的切...

JVM原理解讀 記憶體分割槽

我們把jvm虛擬機器管理的記憶體區域叫做執行時資料區,把不由jvm虛擬機器管理的的區域叫做直接記憶體或本地記憶體 執行時資料區在邏輯上總共分為5個分割槽 堆 程式計數器 方法區 虛擬機器棧 本地方法棧 其中所有執行緒共享堆和方法區,每個執行緒都有自己的程式計數器 虛擬機器棧和本地方法棧 堆是jvm記...

JVM 記憶體和SWAP問題

1 系統穩定執行,偶爾發生響應超時的情況。檢視下游依賴服務和資料庫狀態都良好。超時完全是由於服務本身問題造成的。重啟不能解決問題,一直會間隔性的發生超時 第一種情況,系統記憶體夠用 jvm記憶體未使用到swap記憶體 但jvm記憶體不夠,最終導致jvm的頻繁垃圾 fgc 嚴重影響效能 stop th...