Java 是一種高級編程語言,廣泛應用于領域范圍廣泛的應用程序開發。Java 程序運行在虛擬機上,即 JVM (Java Virtual Machine)。
JVM 內存模型指的是 Java 虛擬機中的內存組織方式。JVM 內存分為方法區、堆、棧和程序計數器。
// JVM 內存分布圖 ___________________________________ | 方法區 (Class area) | |___________________________________| | | | Java 堆 (Heap) | | | |___________________________________| | | | Java 棧 (Stack) | |___________________________________| | | | 程序計數器 (Program Counter) | |___________________________________
方法區存儲已加載的類型信息、常量、靜態變量、即時編譯器編譯后的代碼等。堆存儲對象實例。棧是每個線程私有的,存儲局部變量、方法參數、返回地址等。程序計數器是當前線程所執行的字節碼的行號指示器。
Java 內存模型規定了共享內存并發環境下多線程程序的處理規范。Java 內存模型的主要目標是確保所有線程看到的變量值是一致的。
Java 中的 volatile 關鍵字能保證變量的操作加了一些特殊的語義,避免了指令重排序的問題。另外,在多線程的環境下,Java 中的 synchronized 關鍵字也可以保證同步訪問變量的操作。
JVM 內存模型與 Java 內存模型密切相關。JVM 內存模型只是 Java 內存模型在運行時的具體實現。當 Java 程序運行在不同的 JVM 上時,具體的實現可能會有差異。
上一篇css 字符超過長度