JVM内存模型详解
2019-03-04 本文已影响0人
玄冰0825
程序计数器
线程私有,线程执行的字节码的行号
虚拟机栈
线程私有,生命周期与线程相同。每个方法执行的时候都会创建一个栈帧(stack frame)用于存放 局部变量表、操作栈、动态链接、方法出口。
本地方法栈
native关键字
方法区
线程共享,存储类加载信息、常量、静态变量等
堆
线程共享,生命周期与虚拟机相同。存放对象实例,所有的对象的内存都在这里分配。垃圾回收主要区域。
- 堆得内存由-Xms指定,默认是物理内存的1/64;最大的内存由-Xmx指定,默认是物理内存的1/4。
- 默认空余的堆内存小于40%时,就会增大,直到-Xmx设置的内存。具体的比例可以由-XX:MinHeapFreeRatio指定
- 空余的内存大于70%时,就会减少内存,直到-Xms设置的大小。具体由-XX:MaxHeapFreeRatio指定。