Java虚拟机七种垃圾收集器比较

1、Serial收集器曾经是虚拟机新生代收集的唯一选择,是一个单线程的收集器,在进行收集垃圾时,必须stop the world,它是虚拟机运行在Client模式下的默认新生代收集器。

2、Serial Old是Serial收集器的老年代版本,同样是单线程收集器,使用标记整理算法。

3、ParNew收集器是Serial收集器的多线程版本,许多运行在Server模式下的虚拟机中首选的新生代收集器,除Serial外,只有它能与CMS收集器配合工作。


4、Parallel Scavenge收集器也是新生代收集器,使用复制算法又是并行的多线程收集器,它的目标是达到一个可控制的运行用户代码跟(运行用户代码+垃圾收集时间)的百分比值。

5、Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和标记整理算法。


6、Concurrent Mark Sweep 收集器是一种以获得最短回收停顿时间为目标的收集器,基于标记清除算法。

过程如下:初始标记,并发标记,重新标记,并发清除,优点是并发收集,低停顿,缺点是对CPU资源非常敏感,无法处理浮动垃圾,收集结束会产生大量空间碎片


7、G1收集器是基于标记整理算法实现的,不会产生空间碎片,可以精确地控制停顿,将堆划分为多个大小固定的独立区域,并跟踪这些区域的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域(Garbage First)。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Java虚拟机的内存结构:Java虚拟机的内存结构由程序计数器、虚拟机栈、本地方法栈、堆和方法区组成。其中程序计数器、虚拟机栈和本地方法栈是线程私有的,堆和方法区是线程共享的。 2. 类加载机制:Java虚拟机的类加载机制包括加载、连接和初始化三个阶段。其中加载阶段将类的二进制数据读入内存,并生成Class对象;连接阶段包括验证、准备和解析三个步骤;初始化阶段则是执行类构造器<clinit>()方法的过程。 3. 垃圾收集器Java虚拟机垃圾收集器主要分为串行垃圾收集器、并行垃圾收集器和并发垃圾收集器。其中串行垃圾收集器适用于单核处理器,而并行垃圾收集器适用于多核处理器,而并发垃圾收集器则是在不停顿的情况下执行垃圾收集。 4. 内存分配策略:Java虚拟机的内存分配策略包括对象优先、年轻代优先、动态对象年龄判定、空间分配担保和TLAB等。其中对象优先策略将新对象分配在Eden区,年轻代优先则是将对象分配在Survivor区,动态对象年龄判定策略则是根据对象的使用情况来决定对象的年龄,空间分配担保则是为了保证在发生Minor GC时,能够有足够的空间分配新对象。 5. JVM性能调优:Java虚拟机的性能调优包括调整堆大小、调整垃圾收集器、选择合适的垃圾收集器、调整线程数、优化代码等。其中调整堆大小可以根据应用的内存使用情况来决定,调整垃圾收集器则需要根据应用的并发性能和延迟要求来选择合适的垃圾收集器,调整线程数则需要根据应用的负载情况来确定,优化代码则是通过避免内存泄漏、减少对象的创建和销毁等方式来优化性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值