java kpi_JAVA内存调优的KPI
当我们在进行Java应用程序的内存和垃圾收集调优时,应该根据关键性能指标做出一系列的决定。但有大量的指标; 选择哪一个,抛弃哪一个?本文将解释内存调优正确的KPI。
内存调优的KPI包括: 吞吐量,响应时间和内存空间占用.
A. 吞吐量
吞吐量是指应用程序在给定的时间段内完成的生产性工作数量。这就带来了一个问题什么是生产性工作?非生产性的工作又是什么?
生产性工作: 应用程序在处理客户事务上花费的时间。
非生产性工作: 应用程序在程序本身事务管理工作(主要是垃圾收集)上花费的时间。
假设你的应用程序运行10分钟。在这10分钟里,假设1分钟用于GC活动。
这意味着应用程序在GC活动上花费了10%(即1 / 10 * 100)
这意味着应用程序吞吐量为90%(即100 - 10)。
现在的问题是:你可接受的吞吐量百分比是多少?它取决于应用程序和业务需求。通常,应该将目标设置为95%以上的吞吐量。
B. 响应时间
这是单个垃圾收集事件运行所花费的时间。这个指标应该从三个方面来研究。
平均GC时间:在GC上花费的平均时间是多少?
最大GC时间:在单个GC事件上花费的最大时间是多少?你的应用程序可能是服务级别协议,例如“任何事务都不能超过10秒”。在这种情况下,你的最大GC暂停时间不能运行10秒。因为在GC暂停期间,整个JVM会冻结——不会处理任何客户事务。因此,了解最大GC暂停时间非常重要。
GC时间分布:你还应该了解在什么时间范围内(即在0 - 1秒内完成300个GC事件,在1 - 2秒内完成20个GC事件…)
C. 内存空间占用
内存占用基本上就是CPU消耗的总量。基于你选择的GC算法和内存设置,CPU消耗将会有所不同。一些GC算法将消耗更多的CPU(如Parallel, CMS),而其他一些算法(如Serial)将消耗更少的CPU。
你一次只能选择其中的两个:
如果你想要良好的吞吐量和响应时间,那么内存占用就会变差。
如果你想要良好的吞吐量和占用空间,那么响应时间就会变差。
如果你想要好的响应时间和占用空间,那么吞吐量将会变差。
java kpi_JAVA内存调优的KPI相关推荐
- Java虚拟机学习(5):内存调优
JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略.由于GC开始垃圾回收时会挂起应用线程,严重影响了性能,调优的目是为了尽量降低GC所导致的应用线程暂停时间. 减少Full GC次 ...
- Java启动参数与内存调优一些学习笔记
转载自 Java启动参数与内存调优一些学习笔记 .参数的含义 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JV ...
- JVM内存调优原则及几种JVM内存调优方法
JVM内存调优原则及几种JVM内存调优方法 1.堆大小设置. 2.回收器选择. 1.在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因 ...
- JVM实用参数(四)内存调优
理想的情况下,一个Java程序使用JVM的默认设置也可以运行得很好,所以一般来说,没有必要设置任何JVM参数.然而,由于一些性能问题(很不幸的是,这些问题经常出现),一些相关的JVM参数知识会是我们工 ...
- JVM学习笔记(四)------内存调优
首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提 ...
- 在面试中如何展示虚拟机和内存调优技能
初学者或初级程序员在面试时如果能证明自己具有分析内存用量和内存调优的能力,这相当有利,因为这是针对5年左右相关经验的高级程序员的要求. 如果在面试时面试官主动问及这方面的问题,大家可以按照如下的思路由 ...
- java g1 收集调优_Java性能调优:充分利用垃圾收集器
java g1 收集调优 JVM背后发生了什么,垃圾回收如何影响Java性能? 性能调优世界是一个危险的地方,一个JVM标志失衡,事情很快就会变得繁琐. 因此 ,我们决定求助于Java性能调优专家, ...
- 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优...
一.前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存. 二.具体 1.代码调优 1.避免创建重复的RDD,尽 ...
- 为什么Java有GC调优而没听说过有CLR的GC调优?
前言 在很多的场合我都遇到过一些群友提这样的一些问题: 为什么Java有GC调优而CLR没有听说过有GC调优呢? 到底是Java的JVM GC比较强还是C#使用的.NET CLR的GC比较强呢? 其实 ...
最新文章
- json11库的使用
- 远控免杀专题1---基础篇
- idea maven dependencies 总是报红
- php百度收录域名访问次数,PHP获取网站百度搜索和搜狗搜索收录量代码
- 程序员搞笑对联_程序员春节对联集锦
- 报表自动化就是连接数据库?错,它打开了数据仓库的大门
- 从Client应用场景介绍IdentityServer4(二)
- 在VMware Workstation 9中安装Mac OS X 10.8 Mountain Lion
- java 字符串 移位_算法学习之字符串左移和右移
- [POI2000]病毒(补全AC自动机)
- python学习第八天--异常和异常处理
- LayaAir UI组件 # List 列表、ProgressBar 进度条
- 聊一聊Cookie(结合自己的学习方法分享一篇维基百科和一篇segmentfault(思否)好文)...
- Android5开机自动执行sh,自动脚本执行器
- 如何清除Excel2007中的网格线?
- Verilog的结构化、数据流、行为级描述方式
- B站科技区 up主 关注排名
- unity可以直接转h5吗_Unity对H5小游戏开发的支持—Project Tiny
- 关于Linux中批量配置SSH免密的一些笔记
- 二级菜单选中,一级菜单背景变换