栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java垃圾回收

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java垃圾回收

垃圾回收算法
    引用计数法:无法解决循环引用,java不采用复制算法:年轻代算法标记清除:标记整理:
垃圾回收方式
    Serial:串行。为单线程环境设计且只使用一个线程进行垃圾回收,会暂停用户线程,不适合服务器环境Parallel:并行。多个垃圾收集线程进行垃圾回收,用户线程短暂暂停,适用于科学计算/大数据平台等弱交互场景CMS:并发。用户线程和垃圾回收线程同时执行(不一定是并行,可能是交替执行),不用暂停用户线程,适用于对响应时间有要求的场景,互联网公司多采用此方式,缺点是老年代垃圾回收采用标记清除方法,会产生内存碎片,并发执行也会对服务器内存造成更大压力G1:
查看默认垃圾回收器
java -XX:+PrintCommandLineFlags -version
7大垃圾回收器
    Serial:新生代串行垃圾回收器,新生代使用复制算法,老年代使用标记整理算法。适用于单线程环境,现在生产环境很少使用。使用此回收器老年代默认激活SerialOld回收器
-XX:+UseSerialGC
    SerialOld:老年代串行垃圾回收器。java8以后不再使用,使用此回收器新生代默认激活Serial回收器
-XX:+UseSerialOldGC
    ParNew:新生代并行垃圾回收器,新生代使用复制算法,老年代使用标记整理算法。最常用场景是配合老年代CMS GC工作,是许多java虚拟机运行在server模式下默认的新生代垃圾回收器。命令行如果只配置此垃圾回收器,那么老年代默认会使用Serial Old垃圾回收器,官方不再推荐这种组合
-XX:+UseParNewGC
    Parallel:新生代并行垃圾回收器。简单来说就是Serial垃圾回收器的并行化,适用于在后台运行弱交互的程序。它关注的是吞吐量,吞吐量=程序运行时长/(程序运行时长+垃圾回收时长)。自适应调节策略是Parallel收集器和Parnew收集器的一个重要区别,虚拟机会根据当前系统运行情况收集监控信息,动态调整参数来获得最合适的GC停顿时间和吞吐量。使用此回收器老年代默认激活ParallelOld回收器
-XX:+UseParallelGC
    ParNewOld:老年代并行垃圾回收器。使用此回收器新生代默认激活Parallel回收器
-XX:+UseParallelOldGC
    CMS:并发垃圾回收器。新生代使用复制算法,老年代使用标记清除算法,是一种以获取最短回收停顿时间为目标的垃圾回收器。在G1出现之前,是大型互联网应用首选垃圾回收器。使用此回收器新生代默认激活ParNew回收器
-XX +UseConcMarkSweepGC

CMS标记清除过程分4步,如图所示

7. G1:区域化垃圾回收器,整体上采用标记整理算法,局部采用复制算法。应用在多处理器和大容量内存环境中,实现高吞吐量同时,尽可能满足垃圾收集暂停时间的要求。有以下特性:

与CMS收集器一样,可以和应用程序线程并发执行G1增加了内存整理,不会产生内存碎片G1 STW更可控,在垃圾回收停顿时间上添加了预测机制,用户可以指定期望停顿时间
G1垃圾回收器不再从物理上区分Eden、Survivor、Tenured区,将整个内存区分成了N个大小一样的region。但在逻辑上保留了新生代和老年代,也就是说随着G1运行,每个region会在不同代之间进行切换

XX:+UseG1GC
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号