目录
今天看的主要是关于内存划分的东西,视频讲解的很简单,所以很好理解,没有像书面资料里那么细致。
java虚拟机主要组成部分有:
一:堆
堆空间分为新生代和老年代
- 新生代:
- Eden区,新创建的对象都在这个区域,经过一次gc后进入s0或s1区域
- S0和s1区(或者称为to和from区),两块大小相等且可以互换的区域
- 老年代:
- 新生代的对象经过一定次数的gc后会被放到老年代,默认次数是15次
Gc采用复制算法进行垃圾回收,比如对象存放在s0中,当gc进行时,将s0中存活对象复制到s1中,然后清空s0区域,下一次则反过来
二:栈
栈分为三个部分:
- 局部变量表:用于报错函数的参数及局部变量
- 操作数栈:保存计算过程的中间结果
- 帧数据区:保存访问常量池的指针及异常处理表
三:方法区
方法区主要保存类信息,如字段,方法,常量池等
方法区可以理解为永久区(Perm)
总结: