首页 > 编程知识 正文

程序员升职记最大值室,程序员升职记第17关

时间:2023-05-04 23:59:45 阅读:32090 作者:4696

程序员晋升记

我相信我确实熟悉落后的样子原则。 通常,这一原则是观察到晋升是可能的,晋升者可能不再符合该职位的条件。

对于JVM,存在同样的问题。 快速提升对象可能会严重影响性能。 本文讨论了提高率的概念,并给出了如何衡量和说明该概念的实用价值。

这是我们上周投稿的后续,说明了分配率的概念。

提升率是按照每个时间单位从年轻一代传播到老一代的数据量来衡量的通常以MB /秒为单位测量,类似于分配速度。 和我们关于分配率的帖子一样,我们再来详细看看晋升率是怎么计算的,为什么应该完全关心晋升率。

要衡量促销率,就从衡量促销率开始吧。 因此,通过在JVM中指定- xx:printgcdetails-xx:printgctimestamps标志打开GC日志记录。 JVM开始记录GC暂停,如以下片段所示。

0.291: [分配故障(配置:33280 k-5088 k ) 38400k ) ] 33280 k-24360 k 125952 k ), 0.0365286 secs real=0.04 secs (0.446: [分配故障(GC ) ] [ psyounggen :38368 k-5120 k (71680 k ) ] 57640 k-440 [times:user=0.15sys=0.02,real=0.04 secs ] 0.829: [分配故障(GC ) ] [ psyounggen :71680 k-5120 k (从“时间:用户=0.23 sys=0.03,实际=0.09 secs”或更高版本中,可以提取收集事件前后的Young Generation大小和总堆大小。 知道年轻一代的消费和总堆栈,就容易把老一代的消费作为两者之间的增量来计算。 GC日志中的信息如下所示。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com.Sina.com 248千11,400千21,848千3358www.Sina.com/第GC 829毫秒66,560千30,888千35672千http://www平均上升速度为92 MB /秒,一度达到140.95 MB /秒的峰值

现在,我们有提高率的定义,知道如何衡量它,让我们来看看这些信息的实用价值。

再次,与分配率一样,提高率的主要影响是GC暂停频率的变化。 但是,与分配率影响次要GC事件的发生频率相比,提高率影响主要GC事件的发生频率。 让我来解释一下向老一辈宣传的东西越多,填写速度就越快。 更快地填充Old gen意味着清理GC GC事件的频率更高。

从实践上看,面对较高的晋升率,可能会出现被称为事件的问题症状。 为了解释这个问题,让我们回顾一下为什么JVM堆首先被划分为不同的内存池。 其理由基于以下观察。

大多数对象很快就不可用了,通常无法生存(很长时间)的人们的意见是时间根据这一假设,虚拟机内部的内存分为年轻一代和老一代(或终生一代)。 有这种可单独清洁的区域使得GC可以使用不同算法来清洁这些区域,从而提高GC的性能。

因此,清理年轻减少这样的对象是Major GC的工作。 Major GC不是针对频繁运行而设计的,这会增加GC暂停时间,严重影响APP应用程序的吞吐量。

信号对于我们来说一定会出现,因为APP应用程序提前升级的症状为总数减少此类问题的分配速度为161 MB /,上调速度为92 MB /。 解决这个问题的方法可能很简单。 例如,更改-XX:NewSize、-XX:MaxNewSize和-XX:SurvivorRatio参数以增加年轻一代的大小。

在很多情况下,这仍然会导致次GC频繁运行。 在这种情况下,必须修改APP应用程序并降低分配率。 实现此目标的方法特定于APP应用程序,但在经常创建的对象中引入缓存可能是解决此问题的方法之一。

从实际角度看,接管应该关心分配和提升的速度,以便了解GC可以跟上对象的创建和升级到上一代的速度。 这些因素严重影响了APP应用程序的吞吐量。 通常,可以通过使用更好的GC配置或更改源代码来缓解此问题。

从3:https://www.Java code geeks.com/2015/09/what-is-promotion-rate.html翻译

程序员晋升记

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。