GC当中吞吐量和暂停时间的区别

GC当中吞吐量和暂停时间的区别是:吞吐量就是 CPU 用于运行用户代码的时间与 CPU 总消耗时间的比值,即吞吐量 = 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间)。“暂停时间” 是指一个时间段内应用程序线程暂停,让 GC 线程执行的状态。

GC当中吞吐量和暂停时间的区别-Worktile社区

吞吐量(throughput)

吞吐量就是 CPU 用于运行用户代码的时间与 CPU 总消耗时间的比值,即吞吐量 = 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间)

比如:虚拟机总共运行了 100 分钟,其中垃圾收集花掉 1 分钟,那吞吐量就是 99%

这种情况下,应用程序能容忍较高的暂停时间,因此,高吞吐量的应用程序有更长的时间基准,快速响应是不必考虑的

吞吐量优先,意味着在单位时间内,STW 的时间最短:0.2 + 0.2 = 0.4

暂停时间(pause time)

“暂停时间” 是指一个时间段内应用程序线程暂停,让 GC 线程执行的状态

例如,GC 期间 100 毫秒的暂停时间意味着在这 100 毫秒期间内没有应用程序线程是活动的

暂停时间优先,意味着尽可能让单次 STW 的时间最短:0.1+ 0.1+ 0.1 +0.1+0.1 = 0.5

吞吐量与暂停时间的对比

高吞吐量较好因为这会让应用程序的最终用户感觉只有应用程序线程在做 “生产性” 工作。直觉上,吞吐量越高程序运行越快

低暂停时间(低延迟)较好因为从最终用户的角度来看不管是 GC 还是其他原因导致一个应用被挂起始终是不好的。这取决于应用程序的类型,有时候甚至短暂的 200 毫秒暂停都可能打断终端用户体验。因此,具有低的较大暂停时间是非常重要的,特别是对于一个交互式应用程序

不幸的是 “高吞吐量” 和 “低暂停时间” 是一对相互竞争的目标(矛盾)

因为如果选择以吞吐量优先,那么必然需要降低内存回收的执行频率,但是这样会导致 GC 需要更长的暂停时间来执行内存回收

相反的,如果选择以低延迟优先为原则,那么为了降低每次执行内存回收时的暂停时间,也只能频繁地执行内存回收,但这又引起了年轻代内存的缩减和导致程序吞吐量的下降

在设计(或使用) GC算法时,我们必须确定我们的目标: 一个 GC 算法只可能针对两个目标之一(即只专注于较大吞吐量或最小暂停时间),或尝试找到一个二者的折衷

延伸阅读:

什么是GC?

GC(Grid Communication)网格通信

网格是一种新兴的技术,正处在不断发展和变化当中。目前学术界和商业界围绕网格开展的研究有很多,其研究的内容和名称也不尽相同因而网格尚未有精确的定义和内容定位。比如国外媒体常用“下一代互联网”、“Internet2”、“下一代Web”等来称呼网格相关技术。但“下一代互联网(NGI)”和“Internet2”又是美国的两个具体科研项目的名字,它们与网格研究目标相交叉,研究内容和重点有很大不同。企业界用的名称也很多,有内容分发(Contents Delivery)、服务分发(Service Delivery)、电子服务(e-service)、实时企业计算(Real-Time Enterprise Computing,简称RTEC)、分布式计算Peer-to-Peer Computing(简称P2P)、Web服务(Web Services)等。中国科学院计算所所长李国杰院士认为,网格实际上是继传统互联网、Web之后的第三次浪潮,可以称之为第三代互联网应用。

网格是利用互联网把地理上广泛分布的各种资源(包括计算资源、存储资源、带宽资源、软件资源、数据资源、信息资源、知识资源等)连成一个逻辑整体,就像一台超级计算机一样,为用户提供一体化信息和应用服务(计算、存储、访问等),虚拟组织最终实现在这个虚拟环境下进行资源共享和协同工作,彻底消除资源“孤岛”,最充分的实现信息共享。

文章标题:GC当中吞吐量和暂停时间的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37795

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月12日 下午4:15
下一篇 2023年2月12日 下午4:18

相关推荐

  • 为什么vscode运行很慢

    Visual Studio Code(VSCode)运行缓慢可能是由于拓展程序占用过多资源、程序配置不当、系统资源有限、软件版本过时或者缺少必要的更新补丁等原因。扩展程序是增强VSCode功能的重要组件,但过多或者性能不佳的拓展可以显著降低编辑器的运行速度,特别是在启动时。为了确保最佳性能,需要定期…

    2024年4月3日
    14700
  • 为什么vscode打不开

    为什么VSCode无法打开,主要原因可能包括软件冲突、系统权限不足、软件本身故障、以及配置文件损坏等。其中,软件冲突问题尤为常见。软件冲突通常指的是VSCode与计算机上其他软件发生了冲突,导致无法启动。这可能是因为某些安全软件误将VSCode识别为威胁并阻止其运行,或者是因为其他软件(如同类型的编…

    2024年4月3日
    14600
  • 项目分散中标后如何管理

    项目分散中标后,有效管理的关键在于全面规划、协调沟通、质量监督、风险管理、及时调整,以及团队建设。全面规划是确保项目顺利进行的基石,它不仅涉及项目的时间、成本、资源等方面,还包括对项目各个阶段的详细规划。而在这些关键点中,协调沟通扮演着至关重要的角色,它是项目管理中不可或缺的一环,可以有效地解决项目…

    2024年4月10日
    5600
  • 如何做好项目考核管理制度

    如何做好项目考核管理制度,首先,制定明确、具体的考核标准;其次,确立合理的考核流程;然后,实施定期与不定期的考核相结合;最后,根据考核结果进行奖惩。这些关键步骤结合起来,可以有效地提升项目管理的质量和效率。在这些步骤中,制定明确、具体的考核标准尤其重要。考核标准是衡量员工在项目中表现的基准,它直接关…

    2024年4月11日
    6200
  • 住宅项目机电如何优化管理

    机电优化管理在住宅项目中是提高工程质量、保证施工效率及节能减排的重要环节。机电管理应着重于合理设计、精细施工、精确采购、高效协调、系统调试及维护保养。合理设计是基础,通过优化设计减少浪费,确保系统高效运行。例如,在供暖通风与空调(HVAC)系统设计中,合理选择系统类型和设备规格,可以有效降低初期投资…

    2024年4月10日
    7500
  • java双冒号是什么操作符

    双冒号(::)运算符在Java8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。它提供了一种不执行方法的方法。为此,方法引用需要由兼容的函数接口组成的目标类型上下文。 一、定义与理解 1、定义 双冒号运算操作符是类方法的句柄,lambda表达式…

    2023年2月8日
    3.1K00
  • 研发管理中最常见的挑战有哪些

    研发管理是一个涉及创新性和复杂性的领域,面对的挑战繁多。1、社会经济变化、2、团队沟通协作、3、项目管理、4、技术更新换代是最常见的挑战。面对社会经济的快速变化,研发管理必须持续顺应新的市场需求和技术趋势,确保项目的可持续性。而在团队沟通协作方面,保持团队成绩和协作精神是至关重要的。项目管理面临着资…

    2023年11月14日
    38500
  • 云原生和传统架构有什么区别

    云原生架构的关键在于其在云环境中设计、构建和运行应用的方式,而传统架构通常是本地化或者专用硬件环境中的应用部署。1、云原生架构更侧重于微服务、容器化、动态管理和自动化。2、传统架构则倾向于单体应用、静态配置和手动运维。3、云原生在弹性、敏捷性和资源利用方面具有优势。 尤其第1点,微服务的利用极大改变…

    2023年12月28日
    35300
  • 云原生环境中有效的负载均衡策略

    在云原生环境中,负载均衡是优化应用性能、可用性和扩展性的关键。有效的负载均衡策略1、确保流量在多个服务器之间均匀分配;2、提高系统容错能力;3、支持动态伸缩;4、实现敏捷的部署和更新;5、保障全局流量管理。 其中,支持动态伸缩是应对不断变化的工作负载和资源需求至关重要的方面。它不仅需要对流量模式和服…

    2023年12月28日
    28700
  • 研发管理制度包含哪些

    开篇阐明,研发(研究与开发)管理制度关乎产品开发流程、项目管理、研发团队的协作及效率。制度通常包含1、研发项目管理制度、2、知识产权管理、3、技术标准与规范、4、研发团队管理、5、质量控制流程,以及6、研发预算与成本管理。尤其要强调的是研发项目管理制度,它是研究与开发工作有序进行的基石,确保项目能在…

    2024年1月9日
    45800

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部