项目经理升职了是啥_什么是升职率?

项目经理升职了是啥

我确实相信您熟悉彼得原则 。 一般而言,该原则是一种观察,即晋升可能会并且将导致晋升人员不再符合工作资格的情况。

彼得原则升职率

对于JVM,存在类似的问题。 太快地提升对象可能会对性能产生重大影响。 在这篇文章中,我们将探讨提升率的概念,演示如何对其进行衡量并解释该概念的实用价值。

这是上周我们帖子的后续内容,解释了分配率的概念。

提升率是按照每个时间单位从年轻一代传播到老一代的数据量来衡量的 。 它通常以MB /秒为单位进行测量,类似于分配速率。 与我们有关分配率的帖子类似,让我们再次更深入地了解升职率是如何计算的,以及为什么您应该完全关心升职率。

衡量促销率

让我们从衡量促销率开始。 为此,我们通过为JVM指定-XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps标志来打开GC日志记录。 JVM现在开始记录GC暂停,如以下代码片段所示:

0.291: [GC (Allocation Failure) [PSYoungGen: 33280K->5088K(38400K)] 33280K->24360K(125952K), 0.0365286 secs] [Times: user=0.11 sys=0.02, real=0.04 secs] 
0.446: [GC (Allocation Failure) [PSYoungGen: 38368K->5120K(71680K)] 57640K->46240K(159232K), 0.0456796 secs] [Times: user=0.15 sys=0.02, real=0.04 secs] 
0.829: [GC (Allocation Failure) [PSYoungGen: 71680K->5120K(71680K)] 112800K->81912K(159232K), 0.0861795 secs] [Times: user=0.23 sys=0.03, real=0.09 secs]

从上面我们可以提取出收集事件之前和之后的Young Generation大小和总堆大小。 知道了年轻一代的消耗和总堆,很容易将老一代的消耗计算为两者之间的差。 将GC日志中的信息表示为:

事件 时间 年轻减少 总数减少 晋升 提升率
第一GC 291毫秒 28192千 892万 19,272千 66.2 MB /秒
第二GC 446毫秒 33,248千 11,400千 21,848千 140.95 MB /秒
第三GC 829毫秒 66,560千 30,888千 35,672千 93.14 MB /秒
829毫秒 76,792千 92.63 MB /秒


可以让我们提取出所测期间的促销率。 我们可以看到,平均提升速度为92 MB /秒,有一段时间达到了140.95 MB /秒的峰值。

现在,掌握了提升率的定义并知道如何衡量它,让我们看一下这些信息的实用价值。

再次,类似于分配率,提升率的主要影响是GC暂停频率的变化。 但是,与分配率会影响次要GC事件的发生频率相反,提升率会影响主要GC事件的发生频率。 让我解释一下–您向老一代人宣传的东西越多,填满它的速度就越快。 较快地填充Old gen意味着清洗GC的GC事件的频率将会增加。

Java垃圾收集的工作原理

从实践的角度来看,面对高晋升率可能会出现一个称为过早晋升的问题。 为了解释这个问题,让我们回顾一下为什么首先将JVM堆划分为不同的内存池。 其原因基于以下观察:

  • 大多数对象很快就变得不可用
  • 那些通常不能存活(很长时间)的人

这些观点在弱代假说中并存 。 基于此假设,VM内的内存分为年轻一代和老一代(或终身一代)。 具有此类单独且可单独清洁的区域使GC可以应用不同的算法来清洁这些区域,从而提高GC的性能。

因此,当预期寿命较短的对象没有在年轻一代中收集并晋升为老一代时,就会发生过早的提升 。 清理此类对象成为Major GC的工作,Major GC并非设计用于频繁运行,并且会导致GC暂停时间更长,从而严重影响应用程序的吞吐量。

信号表明应用程序遭受过早升级的症状是升级率接近分配率 。 就我们而言,我们肯定会遇到这样的问题,因为我们的分配速率为161 MB /秒,提升速率为92 MB /秒。 解决该问题的方法可能很简单,例如通过更改-XX:NewSize-XX:MaxNewSize-XX:SurvivorRatio参数来增加年轻一代的大小。

在许多情况下,这仍将导致次要GC运行过于频繁。 在这种情况下,您将需要更改应用程序并降低分配率。 如何实现此目标是非常特定于应用程序的,但是为频繁创建的对象引入缓存可能是解决此问题的一种方法。

带走

从实际的角度来看,您应该关心分配和提升的速率,以了解GC可以跟上对象创建和提升到旧一代的步伐。 这些因素会严重影响应用程序的吞吐量。 通常,可以通过使用更合适的GC配置或通过对源代码进行简单更改来缓解此问题。

翻译自: https://www.javacodegeeks.com/2015/09/what-is-promotion-rate.html

项目经理升职了是啥

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

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

相关文章

mysql多表 性能_Mysql 多表联合查询效率分析及优化

1. 多表连接类型1. 笛卡尔积(交叉连接)在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用, 如:SELECT*FROMtable1CROSSJOINtable2SELECT*FROMtable1JOINtable2SELECT*FROMtable1,table2由于其返回的结果为被连接的两个数据表的乘积,因…

mysql事件定时_MySQL事件(定时任务)

whats the MySQL 事件MySQL5.1 版本开始引进 event 概念,MySQL 中的事件(event:时间触发器)是用于执行定时或周期性的任务,类似 Linux 中的 crontab,事件可以精确到秒。通过单独或调用存储过程使用,在某一特定的时间点…

lucene简介_Lucene简介

lucene简介本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中,您将了解Lucene。 您将了解为什么这样的库很重要,然后了解Lucene中搜索的工作方式。 此外,您将学习如何将Lucene Search集成到您自己的应用程序中&…

jsp mysql 插入数据_jsp连接MySQL实现插入insert操作功能示例

下午终于实现了jsp连接MySQL执行插入操作的功能。在index.jsp页面输入数据,提交到mysql——insert.jsp页面进行插入数据库的操作。index.jsp页面代码如下:request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8&…

swagger生成示例_生成器设计模式示例

swagger生成示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &…

mysql函数和索引冲突问题_Mysql索引常见问题汇总

Q1:数据库有哪些索引?优缺点是什么?1.B树索引:大多数数据库采用的索引(innoDB采用的是b树)。能够加快访问数据的速度,尤其是范围数据的查找非常快。缺点是只能从索引的最左列开始查找,也不能跳过索引中的列&#xff0c…

新增操作 失败后重试_可重试的操作

新增操作 失败后重试在我从事的每个项目中,始终需要某些功能:重试操作。 通常,这是关于通过网络的呼叫,该呼叫可能一次失败,但随后会成功。 它可能涉及许多其他内容,主要包括与另一个系统的通信&#xff08…

mysql uroot e_批量 kill mysql 连接

事故重现,并且加入一些后期想到的想法作为演义. 今天 mysql 服务器负载过高, 主库上主要是写的操作,首先看有没有锁表的,发现没有.mysql -uroot -e "show processlist"|grep -i locked|wc -l再看delete,update,insert操作的数量.mysql -uroot -e "show process…

设计模式适配器模式_适配器设计模式示例

设计模式适配器模式本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &…

mysql mgr bug_Mysql MGR架构误操作引发的问题处理

【背景介绍】故障方描述:一次用户刷权限的时候不小心把数据库用户表记录删掉了,执行之后发现不对后重建用户,杀掉进程后重新MGR启动报错。【报错信息】2018-06-13T12:47:41.405593Z 32 [Note] Plugin group_replication reported: Group comm…

css外墙法_外墙设计模式示例

css外墙法本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff0…

向 mysql导入数据 源码_MySQL 导入数据

MySQL 导入数据MySQL中可以使用两种简单的方式来导入MySQL导出的数据。使用 LOAD DATA 导入数据MySQL 中提供了LOAD DATA INFILE语句来插入数据。以下实例中将从当前目录中读取文件 dump.txt ,将该文件中的数据插入到当前数据库的 mytbl 表中。mysql> LOAD DATA …

设计模式示例_桥梁设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

数值分析 使用c语言 源码_分析源码,学会正确使用 Java 线程池

在日常的开发工作当中,线程池往往承载着一个应用中最重要的业务逻辑,因此我们有必要更多地去关注线程池的执行情况,包括异常的处理和分析等。本文主要聚焦在如何正确使用线程池上,以及提供一些实用的建议。文中会稍微涉及到一些线…

设计模式示例_状态设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

cam350 不能打开光绘文件_如何在CAM350中导入Allegro光绘

内容简介:本人之前遇到过 CAM350 导入 Allegro 格式光绘后钻孔偏移、异型孔不显示的问题,捣鼓过之后找到一个方法,在 Allegro 群友的建议下制作该文档进行适当的说明。1. 导入 Gerber 文件鉴于手工导入 Gerber 文件需要逐层设置,过…

mockito验证参数_Mockito验证

mockito验证参数本文是我们名为“ 用Mockito测试 ”的学院课程的一部分。 在本课程中,您将深入了解Mockito的魔力。 您将了解有关“模拟”,“间谍”和“部分模拟”的信息,以及它们相应的存根行为。 您还将看到使用测试双打和对象匹配器进行验…

d3js mysql_D3.js入门指南

近期略有点诸事不顺,趁略有闲余之时,玩起D3.js。之前实际项目中主要是用各种chart如hightchart、echarts等,这些图形库玩起来貌都是完美的,一切皆可配置,但几年前接触了D3之后,觉得前面那chart类库局限的地…

docker 镜像选择_为什么选择Docker?

docker 镜像选择容器并不是什么新鲜事物,但是实现它们总是比需要的要复杂一些。 Docker在简化容器方面取得了长足的进步,并从此引爆了整个世界。 让我们看看为什么。 为什么Docker成为家喻户晓的名字 Docker不是很老。 2014年5月,当我写了一…

layui templet格式化_layui使用templet格式化表格数据的方法

增加js/*---------------------格式化时间开始--------------------------*///对Date的扩展,将 Date 转化为指定格式的String//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,//年(y)可以用 1-4 个占位符,毫秒(S)只能用…