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中文网其他相关文章!