JVM内存模型详解

程序计数器

线程私有,线程执行的字节码的行号

虚拟机栈

线程私有,生命周期与线程相同。每个方法执行的时候都会创建一个栈帧(stack frame)用于存放 局部变量表、操作栈、动态链接、方法出口。

本地方法栈

native关键字

方法区

线程共享,存储类加载信息、常量、静态变量等

线程共享,生命周期与虚拟机相同。存放对象实例,所有的对象的内存都在这里分配。垃圾回收主要区域。

  • 堆得内存由-Xms指定,默认是物理内存的1/64;最大的内存由-Xmx指定,默认是物理内存的1/4。
  • 默认空余的堆内存小于40%时,就会增大,直到-Xmx设置的内存。具体的比例可以由-XX:MinHeapFreeRatio指定
  • 空余的内存大于70%时,就会减少内存,直到-Xms设置的大小。具体由-XX:MaxHeapFreeRatio指定。

你可能感兴趣的:(JVM内存模型详解)