Java学习笔记12

GC(垃圾回收)

GC算法

GC算法有标记清除法、标记整理、复制算法、引用计数器
堆里面的分区:Eden、from、to、老年区

引用计数法

在这里插入图片描述

复制算法

在这里插入图片描述

每次垃圾回收(GC)会将Eden活的对象放入移入幸存区from,两个幸存区中谁空谁就是to。一旦Eden区进行了垃圾回收,Eden就为空
当一个对象经过15次(默认值)垃圾回收(GC)还没死,就会进入养老区。
(-XX:MaxTenuringThreshold=999)
通过该命令设置进入养老区的时间
From和To区会发生变化
在这里插入图片描述
好处:没有内存碎片
坏处:浪费内存空间

标记清除法

在这里插入图片描述
优点:不需要额外的空间
缺点:两次扫描严重浪费时间,会产生内存碎片

标记压缩法

在这里插入图片描述

小结

内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)
内存整齐度:复制算法=标记压缩算法>标记清除算法
内存利用率:标记清除算法=标记压缩算法>复制算法
没有最好的算法,只有最合适的算法-GC:分代收集算法
年轻代:

  • 存活率低(使用复制算法)
    老年代:
  • 区域大,存活率高(使用标记清除(内存碎片不是太多)算法和标记压缩算法混合)

JMM

JMM:Java Memory Model(Java 内存分析模型)
作用:缓存一致性协议,用于定义数据读写规则
JMM定义了线程和主内存之间的抽象关系,线程之间的共享变量存储在主内存(Main Memory)之中,每个线程都有一个私有的本地内存(Local Memory)。
每个线程都有自己的工作区域,都是从主内存拷贝过来
在这里插入图片描述
解决共享对象可见性问题(数据不一致):volilate
volilate能保证可见性、顺序性,不能保证原子性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值