我们经常在命令行启动的时候指定了堆内存的大小,用于分配和存储绝大部分的对象实例.是VM管理的最大一块内存, 也是垃圾收集器的主要活动区域。
程序中的大多数可回收的内存可归为两类:大部分对象很快就不再使用、还有一部分不会立即无用但也不会持续(太)长时间。
这些观测形成了弱代假设基于这一假设, VM中的内存被分为年轻代和老年代老年代有时候也称为年老区。拆分为这样两个可清理的单独区域允许采用不同的算法来大幅提高GC的性能。
横坐标可理解为对象的存活时间.大部分对象分配完不就就被回收了。有一些要存活很久垃圾回收会导致应用程序停顿对于不同存活时间的对象在垃圾回收区别对待从而进行各种优化来减少这种停顿,是分代内存结构设计的初衷。
线程私有域,它生命周期与线程相同,依赖用户线程的启动/结束而创建/销毁。
程序计数器一块较小的内存空间,作用是当前线程所执行字节码的行号指示器(类似于传统CPU模型中的PC),PC在每次指令执行后自增,维护下一个将要执行指令的地址。
Java 虚拟机栈,每个方法被执行时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法被调用至返回的过程,,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
本地方法栈,与Java Stack作用类似,区别是Java Stack为执行Java方法服务,而本地方法栈则为Native方法服务。
本文简述了一下Java虚拟机的内存模型的内容,小编的分享就结束了。