Java虛擬機記憶體區域是一個運行時區域,用於執行java應用程式運行時涉及的各種程序,JVM的記憶體區域大致分為五個不同的部分,分別是方法區、堆區、堆疊、程式計數器(PC)暫存器區域和本機方法區域。在本文中,我們將討論 Java 中不同類型的記憶體。
廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗眾所周知,java是一種物件導向的語言;因此,Java中建立的所有物件都儲存在JVM(Java虛擬機器)中。 JVM記憶體基本上分為以下幾個部分:
所有正在執行的線程共享這部分JVM記憶體區域。類別元素,如常數池、類別欄位、建構函式程式碼、方法程式碼等。方法區可以被視為堆區的一部分,但僅儲存每個類別的資料。可以說方法區負責保存類別層級的資訊。
java中的堆記憶體被java運行時用來在java程式執行期間為物件和類別分配記憶體。每當在java中建立一個物件時,它就會儲存在堆記憶體中。垃圾收集過程在堆記憶體上運行,以釋放不必要的空間,即垃圾收集從堆區域中刪除那些沒有任何引用的物件。 java中的堆內存分為以下幾個部分:
以下是有關 Java 堆記憶體的一些重點:
顧名思義,堆疊記憶體是基於 LIFO(後進先出)原則。堆疊記憶體用於靜態記憶體分配,java程式中的每個執行線程都有自己的堆疊記憶體。每當呼叫 Java 方法時,都會在 Java 堆疊記憶體中建立一個新區塊,用於保存本機或中間變數以及對方法中其他物件的參考。一旦該方法執行完成,堆疊中的記憶體區塊就會變空並被下一個方法使用。與堆疊記憶體相比,堆疊記憶體的大小較小。以下是堆疊記憶體的一些重要特性。
pc暫存器的主要作用是儲存目前執行指令的位址。它還儲存負責執行當前指令的線程的位址。分配給pc暫存器的記憶體大小非常小。在 JVM 中執行的 Java 應用程式不會對 PC 暫存器記憶體或其內容產生任何影響。
該區域是使用java以外的語言實現的。隨著新線程的創建,記憶體將在該區域中為每個創建的線程分配。原生區域的大小可以是固定的,也可以是動態的。
現在我們將看到一個顯示記憶體如何分配的 java 範例:
代碼:
package com.edubca.javademo; class StudentData { int rollNumber; String name; public StudentData(int rollNumber, String name) { super(); this.rollNumber = rollNumber; this.name = name; } public int getRollNumber() { return rollNumber; } public void setRollNumber(int rollNumber) { this.rollNumber = rollNumber; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Main { public static void main(String[] args) { int id = 11; String name = "Yash"; StudentData s = null; s = new StudentData(id, name); System.out.println("Student Id is " + s.getRollNumber()); System.out.println("Student Name is " + s.getName()); } }
輸出:
記憶體分配:
現在我們來看看上面的程式中記憶體是如何分配的:
以上是Java 中的記憶體類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!