什么是分配率?

Java分配率 诸如“不可持续的分配率”和“您需要保持较低的分配率”等短语似乎仅属于Java Champions的词汇表。 复杂,恐怖并被魔术光环包围。

经常发生的情况是,当您更仔细地查看概念时,魔术会随着抽烟消失。 这篇文章试图从提到的条款中删除魔术。

什么是分配率?我为什么要关心?

分配率以每个时间单位分配的内存量来衡量。 通常以MB /秒表示,但如果您愿意,可以每年使用PB。 这就是全部,没有魔术,只是您在一段时间内在Java代码中分配的内存量。

但是,仅了解这一事实并不太有益。 如果您可以忍受我,我将指导您实际使用该概念。

面对高分配率可能会给您的应用程序性能带来麻烦。 从实际的角度来看, 垃圾收集已成为瓶颈,从而浮出水面。 从硬件的角度来看,即使是商用硬件,每个内核也可以维持数GB /秒的分配,因此,如果您的速率开始不超过1 GB /秒/核,您可以放心,您的硬件实际上不会成为瓶颈。

因此,在关注GC时,我们可以从一个在现实世界中也适用的类比开始-如果您创建很多东西,那么之后往往会面临很多清理工作。 知道JVM是使用垃圾收集机制构建的,因此需要研究分配速率如何更改GC暂停的频率或持续时间。

衡量分配率

让我们从分配率的测量开始。 为此,我们通过为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]

从上面的GC日志中, 我们可以将分配率计算为上一个收集完成后和下一个收集开始之前的年轻代大小之间的差。 使用上面的示例,我们可以例如提取以下信息:

  • JVM启动后的291 ms ,创建33,280K 个对象。 第一次小型GC事件清除了Young一代,此后,Young一代还剩下5,088K个对象。
  • 发射后446毫秒,Young gen占用已增加到38,368 K, 触发了下一个GC,从而将Young Gen的占用减少到了5,120K
  • 发射后829毫秒,Young gen大小为71,680K ,GC再次将减小至5,120K

然后可以在下表中表示此数据,将分配率计算为年轻入住率的增量:

事件 时间 年轻之前 年轻之后 分配期间 分配率
第一GC 291ms 33,280KB 5,088KB 33,280KB 114MB /秒
第二GC 446毫秒 38,368KB 5,120KB 33,280KB 215MB /秒
第三GC 829毫秒 71,680KB 5,120KB 66,560KB 174MB /秒
829毫秒 不适用 不适用 133,120KB 161MB /秒

有了这些信息,我们可以说该特定软件在测量期间的分配速率为161 MB /秒。

分析影响

现在,有了这些信息,我们就可以了解分配速率的变化如何通过增加或减少GC暂停的频率来影响应用程序吞吐量。 首先,您应该注意到只有Minor GC暂停清洁Young Generation会受到影响。 GC清理旧一代的频率或持续时间不受分配率的直接影响,而受晋升率的直接影响, 晋升率将在下一篇文章中介绍。

知道我们只能专注于次要GC暂停时,我们接下来应该研究Young Generation内部的不同内存池。 当分配在Eden中进行时 ,我们可以立即查看Eden的大小如何影响分配率。 因此,我们可以有一个假设,即增加Eden的大小将减少较小的GC暂停频率,从而使应用程序能够维持更快的分配速率。

实际上,当使用-XX:NewSize -XX:MaxNewSize和-XX:SurvivorRatio参数运行具有不同Eden大小的相同示例时,我们可以看到分配率有两倍的差异

  • 以100M的Eden运行上述示例,将分配速率降低到100MB / sec以下
  • 将Eden大小增加到1GB,可以将分配速率增加到刚好低于200MB /秒。

如果您仍然想知道为什么这是正确的- 如果您不常停止GC的应用程序线程,则可以做更多有用的工作。 还发生了更多有用的工作来创建更多对象,从而支持增加的分配率

现在,在得出“更大的伊甸园更好”的结论之前,您应该注意到分配率可能并且可能与应用程序的实际吞吐量没有直接关系。 这是一项技术指标,有助于提高吞吐量。 分配速率可能会并且会影响您的次要GC暂停停止应用程序线程的频率,但是要查看整体影响,您还需要考虑主要GC暂停并以应用程序的业务操作(不是MB / sec)来衡量吞吐量。提供。

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

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

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

相关文章

流量分析----CTF题

文章目录 题目背景一、关卡列表二、解题1. 请分析流量,给出黑客使用的扫描器2. 请分析流量,得到黑客扫描到的登陆后台是(相对路径即可)3. 请分析流量,得到黑客使用了什么账号密码登陆了web后台(形式:username/password)4. 请分析流量&#x…

一文教你从零开始设计并实现一个Java扫雷游戏

背景:扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界面,每一处的细节都体现了扫雷的魅力。以JAVA语言作为开发环境&#…

C#循环语句(for循环)

循环语句 for(初始条件&#xff1b;循环条件&#xff1b;状态改变) { 循环体 &#xff1b;执行代码&#xff08;break跳出循环体&#xff09; } for(i1&#xff1b;i<100;i) 初始条件是i1;循环条件是i<100,即直到i在1-100之内进行循环&#xff0c;直到100结束循环&#x…

Apache Shiro 认证绕过漏洞 CVE-2020-1957 漏洞复现

Apache Shiro 认证绕过漏洞 CVE-2020-1957 漏洞复现 一、漏洞描述二、漏洞影响三、漏洞复现1、环境搭建2、漏洞复现 四、漏洞POC五、参考链接 一、漏洞描述 Apache Shiro 是一款开源安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用&#xff…

H5工程师在谷歌浏览器调试并开发原生APP项目的解决办法

背景:项目是前后端分离,我想在浏览器调试项目,工具使用HB-X。密码是不可输入状态。 1.login.html在HB-X中运行到谷歌浏览器页面 。按F12进入调试模式。 2.密码做了安全防御,不能直接输入,我们在控制台进入。定位到password的id。

「Java代码审计」华夏ERP3.0代码审计

本文转载于&#xff1a;https://blog.csdn.net/Ananas_Orangey/article/details/120340010?ops_request_misc%257B%2522request%255Fid%2522%253A%2522166565951516782427492557%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id166…

Fastjson 1.2.22-24 反序列化漏洞分析

Fastjson 1.2.22-24 FastJson在 1.2.22 - 1.2.24 版本中存在反序列化漏洞&#xff0c;主要原因FastJson支持的两个特性&#xff1a; fastjson反序列化时&#xff0c;JSON字符串中的 type 字段&#xff0c;用来表明指定反序列化的目标恶意对象类。 fastjson反序列化时&#xf…

检测到堆栈粉碎

我敢打赌&#xff0c;每一个Java开发人员在他们的职业生涯初期都首次在Java代码中遇到本机方法时都会感到惊讶。 我还可以肯定&#xff0c;多年来随着了解JVM如何通过JNI处理对本机实现的调用而使惊喜消失了。 这篇文章是关于本机方法的最新经验。 更详细地讲&#xff0c;使用…

fastjson反序列化分析

1.fastjson简单使用 User: package com.naihe;public class User {private String name;private int age;public User() {}public User(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {th…

银行家算法:解决多线程死锁问题

死锁&#xff1a; 死锁产生的现场&#xff1a;当A进程P S2信号量而B进程P S1信号量时就会产生死锁&#xff0c;因为S2信号量需要B进程释放&#xff0c;而S1信号量需要A进程释放&#xff0c;因此两个进程都在等相互的资源&#xff0c;造成死锁。 死锁产生的条件&#xff1a; 互斥…

转:巧用搜狗输入法输入英文单词

转&#xff1a; http://www.techweb.com.cn/digi/experience/2013-06-03/1300700.shtml 你是否遇到过这样的情形&#xff1a;想打一个英文单词&#xff0c;但是忘了具体拼写是什么&#xff0c;只是记了个大概?比如“竞争”&#xff0c;到底是competetion还是competition呢?又…

服务器ping不通的解决办法之阿里云云服务器VNC报错Failed to execute /sbin/init

背景:最近买了一个阿里云的云服务器,今天想安装阿里云的操作文档搭建一个博客网站来着,发现服务器公网IP都ping不通 解决办法参考: 方法一:如何解决ping请求超时的问题 方法二:本地ping服务器连接不到,总是超时 我的防火墙已经关闭,内网切换移动网络也不行,安全组…

从ofcms的模板注入漏洞(CVE-2019-9614)浅析SSTI漏洞(freemarker模板)

https://www.cnvd.org.cn/flaw/show/CNVD-2019-08488 思路: 1、pom.xml的时候发现存在模版引擎freemarker http://t.zoukankan.com/Eleven-Liu-p-12747908.html 2、寻找修改模版的地方 TemplateController.java 3、添加执行Payload <#assign ex“freemarker.template.utilit…

Goby反制复现

0x00 前言 最近复现Goby反制的时候遇到很多坑&#xff0c;记录一下反制过程以及遇到的坑点&#xff0c;还有世界上最强的黑客mux1ng帮我解决了很多问题。 0x01环境 攻击机&#xff1a; windows10 Goby1.8.230 172.20.10.3反制机&#xff1a; Windows7 Phpstudy2016 172.20.…

fckeditor漏洞_三十,文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御

一.编辑器漏洞 1.编辑器 编辑器属于第三方软件&#xff0c;它的作用是方便网站管理员上传或编辑网站上的内容&#xff0c;类似我们电脑上的Word文档。 编辑器通常分为两种情况&#xff1a; (1) 不需要后台验证&#xff0c;可以直接在前台访问且操作。通过方法找到编辑器&#x…

畅捷通T+任意文件上传(CNVD-2022-60632 )漏洞复现

一、漏洞描述 2022年8月29日和8月30日&#xff0c;畅捷通公司紧急发布安全补丁修复了畅捷通T软件任意文件上传漏洞。未经身份认证的攻击者利用该漏洞&#xff0c;通过绕过系统鉴权&#xff0c;在特定配置环境下实现任意文件的上传&#xff0c;从而执行任意代码&#xff0c;获得…

不喜欢节流吗?

您别无选择–基础系统&#xff08;此处的JVM将为您完成此选择&#xff09;。 我仍然记得2013年夏天&#xff0c;当时我正在运行一个项目&#xff0c;整个应用程序中只有1个URL使服务器瘫痪。 问题很简单-机器人决定以很高的速率索引我们的网站&#xff0c;并且该机器人正在创建…

OData V4 系列 查询操作

OData 学习目录 对OData的操作&#xff0c;主要是查询&#xff0c;下面把相关的查询情况列出来&#xff0c;供参考学习&#xff0c;每个操作都有对应的截图&#xff0c;便于理解 默认查询 $expand 查询导航属性关系 &#xff0c;查询Product相关的Supplier $top、$skip、$orde…

JSP项目打开不通的查看详情页动画是放大状态的解决办法

背景:前段时间做了一个详情页在当前页面的放大缩小的动画效果,——>我是如何用Jquery实现网页缩小放大的 今天测试反馈:详情页是缩小状态,点击关闭后打开其他的查看详情页页面,还是默认的缩小状态,需要做成,每次打开默认是放大的效果。 截图: 这个系统比较老,boots…

gorm 密码字段隐藏_KeeWeb for mac(密码管理工具)

KeeWeb是一个非常专业的密码管理工具。这款工具支持Mac OS X&#xff0c;Windows和Linux平台&#xff0c;不需要任何安装和工作在所有现代浏览器&#xff0c;搜索任何条目或查看所有文件中的所有项目作为一个列表。功能非常强大实用。本站现在提供KeeWeb Mac版下载&#xff0c;…