JVM的内存结构(运行时数据区)

定义:Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域

本质:是操作系统,class就类似命令

内存结构:
JVM的内存结构(运行时数据区)

  1. 运行时数据区:程序计数器、虚拟机栈、本地方法栈、方法区、堆
  2. 程序计数器
    作用:指向当前线程正在执行的字节码指令的地址(行号),Java是多线程的,需要上下文切换,确保多线程情况下程序正常执行
    特点:是唯一不会发生00M(内存泄漏)的。
  3. 虚拟机栈
    作用:存储当前线程运行方法所需的数据,指令,返回地址
  4. 本地方法栈
    作用:管理由C语言实现的本地方法的调用,例: Object.hashcode 方法,服务的对象是 native 方法
  5. 方法区
    作用:存放已被虚拟机加载的类相关信息,包括类信息、静态变量、常量、运行时常量池、字符串常量池等。
    变化:jdk1.7及以前 就叫永久代
    jdk1.8及以后 就叫元空间
    永久代和元空间的区别:
    永久代受制于堆大小
    元空间受制于机器的内存

  6. 作用:存储几乎所有的我们申请的对象。
    特性:内存分配与回收

相关文章: