JVM垃圾回收,参数,强软弱虚,常见错误OOM,与微服务结合.docx

JVM垃圾回收,参数,强软弱虚,常见错误OOM,与微服务结合.docx

? ? ? ? ? JVM垃圾回收,参数,强软弱虚,常见错误OOM,与微服务结合等---个人笔记四 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一: 什么是垃圾回收? 程序运行必然需要申请内存资源,无效的对象会占有内存导致内存溢出. 1.1:C/C++语言的垃圾回收 通过delete释放内存资源 1.2:java垃圾回收 有自动垃圾回收机制(GC) 二 jvm模型 三:垃圾回收常见算法: 引用计数法,标记清除法,标记压缩法,复制算法,分代算法 3.1:引用计数法 特点:历史悠久 原理:任何对一个对象的引用,这个对象引用计数器就+1,当没有被引用(计数器为0),就回收 优点: ~实时性高,一有0引用对象就回收 ~区域性,更新对象计数器只影响本对象,不扫描全部对象 ~垃圾回收过程中,无需挂起,申请内存不足抛OutOfMember异常 缺点: ~每次都需要更新计数器浪费性能 ~即使内存够还需运行计数器,浪费性能 ~无法解决循环引用问题(最大缺点):两个对象互相引用对方 可以做GC Roots的对象 虚拟机栈中引用的对象 方法区中类静态属性引用的对象 方法区中常量引用的对象 本地方法栈中JNI引用的对象(Native方法) 3.2标记清除法 特点: ~标记:从根节点开始标记引用的对象可达性分析 ~清除:未被标记引用的对象计算垃圾对象开始清除 原理: 当内存没有了,开始运行GC线程开始标记工作,从root对象可达的对象标记为存活对象.清理未被标记的对象. 优点: ~解决了循环引用的问题 缺点: ~效率低:标记和清除两个动作需要扫描全部对象 ~碎片化严重:被回收的对象可能位于内存的各个角落,被清理后的内存不连贯 3.3标记压缩算法 特点: 在标记清除算法基础上做了优化 原理: 当内存没有了,开始运行GC线程开始标记工作,从root对象可达的对象标记为存活对象.将存活对象压缩到内存的一端,并清理未被标记的对象. 优点: ~解决了循环引用问题 ~解决了标记清除算法的碎片化问题 缺点: ~对存活对象的移动影响性能 3.4复制算法 原理: 原内存空间被一分为二,每次只用一块,垃圾回收时,将还使用的对象复制到另一个空间,把这个空间清空 过程: a.在GC开始时,对象只存在Eden区和名为From的Survivor区,名为To的Survivor区是空的 b.GC开始执行,Eden区存活的对象都会被复制到To,而From区存活对象根据他们的年龄值决定去向(年龄值可以通过-XX:MaxTenuringThreshold设置),年龄达到一定值的对象区年老代,没有达到阈值的对象复制到To c.GC完成后,Eden区和From区都被清空,然后From和To交换角色,保证名为To的Survivor是空的 d.GC会一直重复次过程,直到To区满了,一旦满了将所有对象移动到年老代中. 优点: ~垃圾越多效率越高 ~内存无碎片 缺点: ~垃圾越少,越不适用 ~内存使用率低(分配2块内存同一时刻只用一块) 3.5分代算法 特点: 根据垃圾回收对象的特点合理的选择算法 比如: 年轻代适合复制算法 老年代适合标记清除或标记压缩算法 四:垃圾收集器 垃圾算法与垃圾收集器 GC算法(引用计数/复制/标清/标压)是内存回收的方法论,垃圾收集器是算法的落地实现 没有的完美的收集器,针对不同应用不同收集器 **java -XX:PrintCommandLineFlags -version查看垃圾回收器 ** 详见后文java参数–查看垃圾收集器 Server模式,Client模式(基本不会用) 32位操作系统(window)默认使用Client的jvm模式 32位操作系统,2G内存同时2个cpu以上用Server模式,低于该配置还是Client模式 64位only server模式 常见的垃圾收集器有: Serial串行垃圾收集器, -XX:+UseSerialGC Parallel并行垃圾收集器, -XX:+UseParallelGC -XX:+UseParallelOldGC 默认 CMS(并发)垃圾收集器, -XX:+UseConcMarkSweepGC G1垃圾收集器 -XX:+UseG1GC …详见下文: 4.1串行垃圾收集器UseSerialGC 特点: 单线程进行垃圾回收 原理: STW(Stop-The-World):垃圾回收时只有一个线程在工作,并且所有的java线程都要暂停等待垃圾回收完毕 实现: 配置JVM参数: -XX:+UseSerialGC 开启后会使用 : Serial(Young区使用) + Seral Old(Old区使用) 的收集器组合 表示: 新生代`老年代都会使用串行回收收集器, 新生代使用复制算法 老年代使用标记

文档评论(0)

1亿VIP精品文档

相关文档