007.JVM内存模型

1. JVM 内存划分

007.JVM内存模型

  • 程序计数器:
    当前线程所执行的字节码的行号指示器
  • 本地方法栈:
    为虚拟机使用的 native 方法服务
  • Java 虚拟机栈:
    描述 java 方法执行的内存模型,
    每个方法被执行的时候都会同时创建一个栈帧,
    用于存储局部变量表, 操作栈, 动态链接, 方法出口等信息.
    当方法调用完毕, 该方法的栈帧会被销毁.
  • Java 堆:
    被所有线程共享的一块内存区域, 在虚拟机启动时创建.
    所有的对象实例以及数组都要在堆上分配.
  • 方法区:
    线程共享的内存区域, 储存已被虚拟机加载的类信息, 常量, 静态变量,
    即时编译器编译后的代码数据等,
    这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载.

2. 垃圾回收器 GarbageCollection

  • Java 的自动垃圾回收机制
  • 作用是不需要去手动的控制内存的释放, 当 JVM 发现内存资源紧张的时候,
    就会自动地去清理无用对象, 即没有被引用到的对象, 所占用的内存空间.
    自动回收的是堆空间的内存, 而栈空间内存会随着方法的执行结束,
    自动释放该方法的栈帧内存.