GC对吞吐量和延迟的影响

每个Java应用程序都必须解决的一种类型的问题与垃圾回收有关。 当垃圾收集器工作时,它代表了一项奇妙的发明。 如果不是这样,或者GC做家务的方式变得不可预测,那么您就有一个朋友变成了敌人。

这篇文章是关于垃圾收集暂停时间的。 或更准确地说-为什么要关心停顿。

之前,我曾通过苹果首席执行官蒂姆·库克 ( Tim Cook)先生针对iPad的需求进行规划并建立工厂来解释吞吐量和延迟 。 我将坚持同样的说明性故事:

  • 我们有一条工厂线,每秒生产一台iPad。 每秒,每秒。 因此,该生产线吞吐量为每天86,400个iPad
  • 从完成外壳成型的一开始到完成iPad的验收测试,整个过程需要四个小时。 因此,该线路等待时间为四个小时

上面的系统和计算是基于这样的假设,即工厂生产线每天每天24小时运行。 但是所有工厂生产线都需要维护,这相当于在JVM内部运行垃圾回收。

举个例子–让我们承担一些小的维护任务,这些任务可以无中断地处理。 例如,可以在机器中加油或从成型设备旁的地板上捡拾多余的垃圾。 这些操作与JVM中的次要GC相似–它是您必须处理的维护工作,但是实现非常聪明,以至于不会影响系统性能。

但是在同一个工厂里 蒂姆·库克(Tim Cook)也将面临长期的维护任务。 这些任务涉及停止整个生产线,并且等效于Full GC运行,在JVM中,JVM需要停止服务线程以执行一些重要的内部管理任务。

现在,让我们假设经过数月不间断的服务后,我们假设的工厂生产线被堵塞,技术团队需要四个小时才能解决问题。 在此期间,线路停止。 我们如何衡量效果? 与往常一样,可以通过两种不同的方式来衡量影响:

  • 对吞吐量的影响 。 四个小时的停顿意味着我们有14,400秒的时间没有完成iPad。 就吞吐量而言,这意味着我们已将这一天的系统容量从86,400减少至72,000。 这意味着约有16.5%的吞吐量损失
  • 对延迟的影响 。 现在,如果我们拿着一台在中断发生时仍在生产中的iPad,则完成该过程所花的时间不是四个,而是八个小时。 这表示最坏情况下的延迟增加100%

如果您还记得,那么先生。 库克并不关心延迟 。 对他来说重要的是较长时间内的总体吞吐量,所以先生。 Cook将决定以使其对吞吐量的影响最小化的方式优化其流程。

在软件开发中也需要做出类似的决定。 如果您有负责订单处理的Java EE应用程序,则GC暂停四秒钟将肯定会降低系统的吞吐量。 但是对于我们大多数人来说,这将不是主要问题。 另一方面,试图在四秒钟内停止执行“我有清理工作”的暂停过程中完成任务的用户会感到我们的系统很慢。 并且,运营一种被用户视为迟钝的服务是一种倒闭的好方法。

故事的士气? 明智地选择目标,并确保不要将吞吐量与延迟混淆。 然后,通过监视GC日志,查找意外的完整GC并调整应用程序和/或GC的影响以使其影响最小,以确保您了解GC对这两种方法的影响。

参考: Plumbr Blog博客上我们JCG合作伙伴 Nikita Salnikov Tarnovski的 GC对吞吐量和延迟的影响 。

翻译自: https://www.javacodegeeks.com/2014/01/gc-impact-on-throughput-and-latency.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错

我在linux服务器上运行不同的r程序。程序因数据库连接失败而出现以下错误: -1: In odbcDriverConnect(paste0("DRIVER{SQL Server}; server", server,: [RODBC] ERROR: state 08001, code 0, message[unixODBC][FreeTDS][SQL Server]Unable to connect to…

高级cmd攻击命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...

各位小伙伴,今天我们继续学习Command Injection,翻译为中文就是命令行注入。是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。在OWASP TOP 10中一种存在注入漏洞,最常见的就是SQL和命令行注入。PHP开发的…

IDEA插件之 CodeGlance

在编辑代码最右侧,显示一块代码小地图 这款插件使用效果图如下,个人感觉还是有点用处,滚动条太小,有这个地图,拖动起来更加方便一点 原文地址:http://tengj.top/2017/02/22/idea1-1/转载于:https://www.cnblogs.com/al…

移动端图片上传方法

移动端图片上传方法 实现效果 文件下载 http://files.cnblogs.com/files/sntetwt/移动端图片上传.rar 实现步骤 一、隐藏<input type"file" id"file" name"Filedata" style"display:none;" accept"image/*" /> 二、…

SQL UPDATE with INNER JOIN

mysql - SQL UPDATE with INNER JOIN - Stack Overflowhttps://stackoverflow.com/questions/14491042/sql-update-with-inner-join MySQL UPDATE JOIN | Cross-Table Update in MySQLhttp://www.mysqltutorial.org/mysql-update-join/ 转载于:https://www.cnblogs.com/rgqancy…

linux 29900端口,USB2.0接口100M以太网芯片SR9900(A)的应用

1&#xff1a;SR9900A和SR9900有啥区别&#xff1a;(就是同一颗料)SR9900A默认随机MAC地址&#xff1a;00E0XXXXXXXXXXSR9900默认纯0MAC地址&#xff1a;000000000000都可以二次烧录MAC地址的… 如果SR9900没货用SR9900A没问题的&#xff0c;但是SR9900A没货&#xff0c;用SR99…

easyui常见问题

1.EasyUI的combobox可以看到选项但是不能选择怎么办 检查一下绑定的字段是否名称一样&#xff0c;valueField:id,textField:name&#xff0c;主要检查valueField $(#contentsName).combotree({panelHeight: auto,panelMaxHeight: 200,multiple: false,required: false,editable…

c语言最大公约数和最小公倍数_五年级奥数课堂之七:公因数和公倍数

乘积尾0的个数公因数和公倍数的基本概念公因数的释义给定若干个整数&#xff0c;如果有一个(些)数是它们共同的因数&#xff0c;那么这个(些)数就叫做它们的公因数。而全部公因数中最大的那个&#xff0c;称为这些整数的最大公因数。公约数与公倍数相反&#xff0c;就是既是A的…

RxJava:从未来到可观察

大约4年前&#xff0c;我第一次在Matthew Podwysocki的博客上遇到了Reactive Extensions &#xff0c;但是直到我几周前看到Matthew在Code Mesh上发表演讲之后&#xff0c;我才对它有所了解。 它似乎最近变得越来越流行&#xff0c;我注意到&#xff0c;现在有一个由Netflix编…

手机站CSS

手机web——自适应网页设计&#xff08;html/css控制&#xff09;内核&#xff1a;-ms- /* IE 9 */-moz- /* Firefox */-webkit- /* Safari and Chrome */-o- /* Opera */一. 网页宽度自动适应手机屏幕的宽度&#xff0c;在head标签内加上以下内容&#xff1a;<meta na…

linux的kerne启动过程,linux

333.6Khttp://www.vuse.vanderbilt.edu/~srs/linux-papers-talks/iee-2002.pdfvuse.vanderbilt.edu全网免费399.3Khttp://www.stillhq.com/pdfdb/000478/data.pdfstillhq.com全网免费333.6Khttp://www.researchgate.net/profile/Gillian_Heller/publication/220386856_Maintain…

设计模式(五)--工厂模式汇总

LZ想把简单工厂模式、工厂方法模式和抽象工厂模式整理到一篇博文当中&#xff0c;由浅入深&#xff0c;应该能方便理解和记忆&#xff0c;话不多说&#xff0c;进入正题。 一、简单工厂模式 定义&#xff1a;从设计模式的类型上来说&#xff0c;简单工厂模式是属于创建型模式&a…

如何估算内存消耗?

这个故事可以追溯到至少十年之前&#xff0c;当时我第一次接触PHB时遇到一个问题&#xff1a;“在生产部署中&#xff0c;我们需要购买多大服务器”。 我们正在构建的新的&#xff0c;闪亮的系统距离生产开始还有9个月的时间&#xff0c;显然该公司已承诺提供包括硬件在内的整个…

python爬取b站403_Python如何爬取b站热门视频并导入Excel

代码如下 #encoding:utf-8 import requests from lxml import etree import xlwt import os # 爬取b站热门视频信息 def spider(): video_list [] url "https://www.bilibili.com/ranking?spm_id_from333.851.b_7072696d61727950616765546162.3" html requests.g…

url文件的格式

[DEFAULT]BASEURL[InternetShortcut]URLWorkingDirectoryShowCommandIconIndexIconFileModifiedHotKey  其中BASEURL、URL和WorkingDirectory这3项的含义是不言而明的。ShowCommand规定Internet Explorer启动后窗口的初始状态&#xff1a;7表示最小化&#xff0c;3表示最大化…

vscode 编辑器常用快捷键

最近&#xff0c;打算换个编辑器&#xff0c;而 vscode 是一个不错的选择。大部分快捷键和 sublime 还是很像的&#xff0c;但有些也不一样。特此整理一份小笔记。 参考&#xff1a; vscode: Visual Studio Code 常用快捷键非常全的VsCode快捷键常用快捷键 主命令&#xff1a;c…

linux sudo永久免密码,linux 免密码 使用sudo 直接使用root权限执行命令

1.切换到root用户下,怎么切换就不用说了吧,不会的本身百度去.百度2.添加sudo文件的写权限,命令是:权限chmod uw /etc/sudoers密码3.编辑sudoers文件文件vi /etc/sudoersvi找到这行 root ALL(ALL) ALL,在他下面添加xxx ALL(ALL) ALL (这里的xxx是你的用户名)sudops:这里说下你能…

Derek解读Bytom源码-创世区块

作者&#xff1a;Derek 简介 Github地址&#xff1a;https://github.com/Bytom/bytom Gitee地址&#xff1a;https://gitee.com/BytomBlockchain/bytom 本章介绍Derek解读-Bytom源码分析-创世区块 作者使用MacOS操作系统&#xff0c;其他平台也大同小异 Golang Version: 1.8 创…

使用调试器进行事后跟踪

我最近一直在使用的大多数调试器的好功能是能够在断点上记录信息。 这对理解代码而无需修改是非常有用的&#xff0c;它涉及字节码修改。 让我们考虑一下这种非常琐碎且效率低下的函数实现&#xff0c;以返回斐波那契数列中的第n个数字。 public class Fib {public long fib(…

链表排序c++代码_[链表面试算法](一) 链表的删除-相关题型总结(6题)

在数据结构的最高层抽象里&#xff0c;只有两种结构&#xff0c;数组和链表。这两种结构&#xff0c;是所有其他数据结构实现的基础。队列和栈&#xff0c;可以用链表和数组来实现。图&#xff0c;可以用邻接表和邻接矩阵来实现&#xff0c;其中&#xff0c;邻接表就是链表&…