jvm

堆 分为老年代和新生代(又分为幸存from和to区),存放创建的对象,年轻代对象没经过一次full gc都会年龄加1, 获得比较久的(默认16)的对象会存到老年代
栈 存放栈帧,每个线程执行方法都会对应一个栈帧模型,里面主要保存局部变量表,操作数栈,动态链接,方法出口

程序计数器 每个线程执行jvm指令的一个字节码计数器
方法区 他是线程共享的 存放 类的一些类的类型信息,常量和静态资源

本地方法栈……

双亲委派机制指的是一个类在被类加载器加载时会先一直调用父类上层的加载器看有没有加载过这个类

垃圾收集算法
标记清除,标记:对gcroot根引用链下的可达对象标记,
清楚:对未标记的对象清除,缺点是内存碎片不连续

复制算法
将内存空间分为两块,一块用来回收,一块用来将
复制回收后存活的对象,这样能保存空间不碎片化

标记整理算法
将gcroot根下的引用对象标记,然后将这些可达对象往内存中的边界端移动相当于做一个压缩,然后将内边界的无用对象清除

垃圾收集器
serrail
一个单线程垃圾收集器,在年轻代使用的是复制算法,老年代用的是标记整理算法,gc时只开启gc线程,关闭用户线程
parnew
它和serail收集器唯一的区别就是serail是单线程的,
parnew是多线程的垃圾收集器,他在gc的时候可以开启多个垃圾线程

cms
使用标记清除算法,老年代收集器
它是用户线程和gc线程可以一起执行的收集器
初始标记 标记所有gc对象,停止所有用户线程
并发标记 用户线程和gc线程一起并行执行,gc线程标记

重新标记 会停掉用户线程,并发重新gc标记,因为上一次并发标记可能还会有新的对象加到内存没有被回收,所以有了这个标记
并发清理 用户线程和gc线程一起执行。

g1 能够控制用户线程停顿时间,使用的是复制算法,用于新生代和老年代的收集器
初始标记 标记所有gc对象,停止所有用户线程
并发标记 用户线程和gc线程一起并行执行,gc线程标记重新标记 会停掉用户线程,并发重新gc标记,因为上一次并发标记可能还会有新的对象加到内存没有被回收,所以有了这个标记
筛选回收 gc线程在回收垃圾之前会对所有的region空间做一个回收成本的排序,他会根据jvm期望在指定时间内的参数,回收可以在这个参数内回收的垃圾对象
g1 young gc 每次gc不会马上触发,会计算一下回收的时间是不是大于jvm设定的指定回收时间参数,如果小于,他只会扩容

minxd gc 等到老年代堆的占有达到jvm设置的老年代内存最大参数,他才会minxdgc ,如果拷贝过程中没有空间,直接full gc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值