JVM训练营!

什么是垃圾回收?
    使用过的数据留在了内存。无法回收

内存泄漏

             对象使用完没回收 一直占着内存。没回收的一直占着内存的多了。就会造成溢出。

如何找到垃圾? 
    引用计数器 有一个使用就加一 当为0就回收。无法解决环形的垃圾
    根 可达性算法。

如何清除?
    mark-sweep   直接把垃圾更改为可用的。速度快,但是会把内存碎片化
       copying  把内存分为两半。 速度快, 但是浪费内存
                mark-compact   把垃圾压缩,碎片整理。效率低。

GC调优就是调整700多个参数
jvm最简单的调优重启...

十种垃圾回收器
                新生代    ParNew    Serial           Parallel  Scavenge 
                                                                                                         G1      ZGC      Shenandoah 
                老年代    CMS         Serial Old     parallel Old

                  1.8 默认ps + po 

                  Serial/Serial Old  单线程的。停止全部,进行垃圾回收
                  Parallel Scavenge  多线程处理。   对于空间大的无法处理。
                  CMS    初始标记:寻找根,并发标记  重新标记  并发清理。
                  G1   逻辑分代,物理不分代,
                  最好的垃圾回收 C4   
分代模型
                   内存里分为两大代:新生代 老年代。
   
                   刚new出来的对象 在新生代。
                   新生代分为 eden survivor1 survivor2
                   对于有用的对象拷贝到 survivor,剩下的直接清除。

                  对于在新生代多次回收不掉的放入老年代。

                  当new出来一个对象 会分配到栈上 如果太大就会分配到 老年代。

实战!!! 

   新生代过大 调节  xmn
   查找服务器上的垃圾回收器    java -XX:+PrintCommandLineFlags -version
   具体参数   java -XX:+PrintFlagsFinal -version 
   
    jstack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值