1.JVM中虚拟机内存结构划分
线程共享区:方法区、堆
线程私有区:虚拟机栈、本地方法栈、程序计数器
堆、方法区、虚拟机栈、本地方法栈、程序计数器。
堆内存分成新生代和老生代(大小比例1:2),新生代中由Eden和Survivor0,Survivor1组成,三者的比例是8:1:1,新生代的回收机制采用复制算法,在Minor GC的时候,我们都留一个存活区用来存放存活的对象,真正进行的区域是Eden+其中一个存活区,当我们的对象时长超过一定年龄时(默认15,可以通过参数设置),将会把对象放入老生代,当然大的对象会直接进入老生代,老生代采用的回收算法是标记整理算法。
方法区(Method Area)与Java堆一样,是各线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
虚拟机栈的作用:主管Java程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。
本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的&#