JVM学习(三)

JVM学习(三)

直接内存

  • 系统内存
  • 常用于NIO操作
  • 分配回收成本较高,读写性能高
  • 不受JVM内存回收管理
  • Direct buffer memory
  • Unsafe类
    在这里插入图片描述

垃圾回收

  • 引用计数法 --引用次数为0的对象可以回收。 存在循环引用。(Python)
  • 可达性分析法 ,肯定不能回收的对象 -> 根对象(GC Root对象)。扫描整堆内存中的所有对象,判断每个对象是否被根对象直接或间接引用。
  • Memory Analyzer 分析堆的工具
  • GC Root :System Class(java.lang.Class) ; 操作系统引用的java对象; 被加锁的对象; 活动线程中使用的对象(包括虚拟机栈中栈帧内引用的对象)。

四种引用

  • 强引用(eg int[] n = new int[2])
  • 软引用 垃圾回收并且内存不够
  • 弱引用 垃圾回收是会被回收
  • 软引用和弱引用也是对象,其所引用的对象被回收后,如果它在创建时分配了引用队列,它会进入引用队列。
  • 虚引用(一定分配了引用队列) eg.Cleaner Cleaner虚引用对象引用ByteBuffer, ByteBuffer 回收后,Cleaner进入引用队列,reference handler线程检查是否有新入队的Cleaner,有则调用clean方法。
  • 终结器引用(一定分配了引用队列) 不推荐使用

垃圾回收算法

  • 标记清除 快、容易产生内存碎片
  • 标记整理 没有内存碎片 慢
  • 复制算法
    标记 -》 from区存活的对象放入to区,交换from区和to区
分代回收

在这里插入图片描述

  • Minor GC 新生代清理
  • Full GC 新生代和老年代整个清理
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值