JVM调优-基础知识

JVM调优-基础知识

1.如何定位垃圾
  1. 引用计数:引用计数是如果一个对象有引用存在,计数器加一,如果计数为0,则认为是垃圾。这种方法有个问题,无法标记循环引用的一团垃圾。
  2. 可达性分析:从跟对象开始搜索,能够触达的对象不是垃圾。
那么什么是 根对象 (GCroot)
  • 线程栈变量:main方法中的能访问的对象
  • 静态变量:class静态变量初始化,能访问的对象
  • 常量池
  • JNI指针:native对象
2.清除垃圾的三个常用算法
  1. Mark-Sweep 标记清除
  2. Copying 拷贝
  3. Mark-Compact 标记压缩
三种算法的特点
  1. Mark-Sweep 标记清除 ,会产生碎片化内存空间
  2. Copying 拷贝,浪费一部分空间
  3. Mark-Compact 标记压缩,效率更低
3.堆内存的分代模型与对象空间分配过程

分代就是对象可以在新生代,或者老年代。这个分代即可以是逻辑分代,也可以是物理分代。
不同垃圾回收器,有不同的分代策略。

G1是逻辑分代,G1之前的都是逻辑+物理分代 ,ZGC ,Epsilon等等不分代。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sbqAOxll-1599737684368)(2C02CA87E0804EE3BF9406182093D29A)]

新生代分为:Eden 和 from区,to区(copy算法)8:1:1

在这里插入图片描述

对象分配空间的过程

  1. 栈上分配
  2. TLAB本地分配
  3. 新生代到老年代
4.常用的垃圾回收器

几个常见分组
  • Serial + Serial Old:最早的垃圾回收组合,单线程,适合小内存
  • ParNew + CMS + Serial Old:CMS是里程碑,实现了并发清理
  • Ps + Po:jdk8默认的回收组合,多线程
  • G1:jdk9以后默认的垃圾回收,jdk8也可以使用,推荐。大内存使用
  • ZGC:比较新,不了解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值