
此章节中重点分析第三部分内存空间模块:
(一)
Java栈区:
1.作用:它存放的是Java方法执行时的所有的数据
2.组成:由栈帧组成,一个栈帧代表一个方法的执行,栈帧是栈的重要组成部分
栈帧:
1.每个方法从调用到执行完成就对应一个栈帧在虚拟机栈中入栈和出栈
2.局部变量表、栈操作数、动态链接、方法出口
(二)本地方法栈
作用:本地方法栈专门为native方法服务的。
(三)方法区
存储被虚拟机加载的类信息、常量、静态变量、及时编译器编译后等数据。这部分数据是永远占据内存的。
(四)堆区
作用:所有通过new创建的对象的内存都在堆中分配
特点:是虚拟机中最大的一块内存,是GC要回收的部分
堆区结构图如下:

主要分两部分:新生带内存区和老生带内存区。创建的对象先会存到新生带内存区之后满了再存到老生带内存区,都满了之后报错oom,新生带和老生带内存区可以动态分布各自的大小。
下一章节介绍垃圾收集的常用算法:https://www.jianshu.com/p/468de70bc4ed
网友评论