浅谈java的垃圾回收机制

这一篇文章只是对我之前看到的东西做一个简单的总结,以后会更新详细的版本

  • 垃圾检测算法:

可达性分析算法;
引用计数算法:没办法处理循环引用的问题

  • 垃圾回收算法:

标记清除算法:先标记,后清除,容易产生碎片,不连续的内存空间
停止-复制算法:将内存分成两块。缺点就是内存折半,只使用其中一块。用满了之后将内存复制到另一边,对于年轻代的对象来说,存活时间短,对象多,比较适合这种算法,老年代的对象较多的时候,存活对象时间长的较多,效率会很低,不适用
标记压缩算法:将对象从一端压缩至另一端,对于老年代存活的较多的比较适用,对象存活时间长
增量算法:在运行程序与回收同时执行,但是当回收时间较多的时候,会占用大量的cpu运行时间
分代算法;

  • 垃圾回收器:

适合新生代
Serial :复制算法
PraNew :停止复制算法 (多线程的Serial)
Parallel Scaverge : 可控制吞吐量
适合老年代
Serial old : 标记整理算法
Parallel old :停止复制算法
CMS : 标记清理算法
G1

  • OutofMemoryError:

检查代码中是否有死循环
数据库是否一次性加载了太多的对象
是否是重复对象建立了很多新实体
List Map使用完后是否没有清除 JVM不能回收
内存值是否设置的太小
使用的第三方类库是否有bug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值