jvm-4

  1. java中NIO(直接内存),比普通io速度更快,且不受到gc作用,NIO免去了系统缓存和java缓存的传输这一步骤
  2. 垃圾回收:通常有引用计数方法和可达性方法,引用计数法存在循环引用的问题(互相引用,都不能被回收)
  3. 可达性分析:查看对象是否能通过gc root对象找到
  4. 引用:强,软,弱,虚
  5. 垃圾回收算法:标记清除,先标记再清楚,不用连续,容易产生内存碎片
  6. 标记整理:在标记清除的基础上再做一步整理,避免内存碎片,但效率低,例如需要移动引用对象的地址
  7. 复制算法:两个区域,一个区域的存活对象复制(顺便整理)到另一个区中,再将这个区垃圾回收,之后再互换。没有内存碎片,但是需要双倍空间
  8. 三种垃圾回收算法根据实际场景协同工作,在jvm中使用分代协同算法
  9. 新生代中分为伊甸园,幸存区from,to
  10. 当一个对象产生时,先被分配到伊甸园,如果空间不足,会促发minor gc,在伊甸园中使用可达性分析算法,存活的使用复制算法,将这些对象复制到幸存区from,并将他们的寿命+1,伊甸园剩余的对象回收掉,复制算法会交换幸存区from和to的位置
  11. 当幸存区from中对象的寿命达到阈值,会被移到老年代(minor gc)
  12. 当老年代内存也不足,先尝试minor gc,还是无法分配,会促发full gc,整体gc一次,full gc的算法不使用复制算法,可能使用标记算法,如果full gc之后不足,会触发oom
  13. minor gc会导致stop the world,因为复制算法会导致一些变量地址的改变,所以需要暂停用户线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值