JVM学习笔记4-垃圾收集器介绍

SerialGC

单线程;有STW(stop the world); 复制算法。

在JDK 1.3 之前的唯一选择。当时CPU资源很有限,单核CPU。

Serial Old

单线程;STW;标记整理算法

SerialGC的老年代版本

ParNew

Serial的多线程版本,与Serial共用了挺多代码。STW;复制算法。

充分利用CPU多核的能力,提高收集速度。缩短业务线程的停顿时间。

默认开启的线程等于CPU核数。可通过-XX:ParallelGCThreads 设置线程数

核数:单颗CPU上的核心个数

吞吐量

吞吐量= 业务代码时间 /(业务代码时间 + 垃圾收集的时间)

高效利用CPU

停顿时间

对于Web应用,停顿时间最好小到一个网络延迟之内。

Parallel Scavenge

多线程;复制算法

更关注吞吐量;吞吐量优先垃圾收集器

-XX:MaxGCPauseMillis 可以控制停顿时间。大于0的值;GC实现尽可能保证不超过此值;

时间不是越短越好;停顿时间短,每次收集垃圾少,垃圾收集会更频繁。慎重设置。

-XX:GCTimeRatio  垃圾收集时间占比

-XX: +UseAdaptiveSizePolicy 用户自适应大小策略。打开后不需要指定新生代大小等参数,会动态调整这些参数。此垃圾收集器的一个特点。

Parallel Old

多线程;标记整理算法。

Parallel Scavenge + Parallel Old 在对CPU资源敏感时是一个不错的选择。

并发类的垃圾收集器

业务线程和GC线程一起运行

调优

调参数;调使用范围,选择GC类型

带并发和全并发介绍

在计算机科学中,并发是指两个或多个事件在同一时间间隔发生,把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。而并行则是指两个或者多个事件在同一时刻发生,把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。

在编程中,并发是指程序的设计以及处理多个同时活跃的任务的能力。全并发是指所有的任务都是并发执行的,而带并发则是指只有部分任务是并发执行的2。

在实现并发的过程中,常用的方法有多线程、多进程、协程等。多线程是指在同一进程内开启多个线程,每个线程执行不同的任务,从而实现并发多进程则是指在操作系统中开启多个进程,每个进程执行不同的任务,从而实现并发协程则是指在同一线程内开启多个协程,每个协程执行不同的任务,从而实现并发。

带并发和全并发的区别在于任务的执行方式。在带并发的情况下,只有部分任务是并发执行的,而其他任务则是串行执行的。而在全并发的情况下,所有的任务都是并发执行的。

带并发和全并发的选择取决于具体的应用场景和需求。如果任务之间存在依赖关系,或者需要保证任务的顺序执行,那么带并发可能更适合。如果任务之间不存在依赖关系,或者需要尽可能地提高任务的执行效率,那么全并发可能更适合。

并发和并行

并发:同时发生。

并行:垃圾收集线程中间有些步骤可以和用户进行一起运行。并行强依赖多线程。

并发不并行

并发并行

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值