吞吐量:用户代码时间/(用户代码时间 + 垃圾回收时间)
响应时间:STW越短,响应时间越好
调优追求的是什么?吞吐量优先还是响应时间优先,还是在满足一定响应时间的情况下,达到多大的吞吐量。

科学计算,吞吐量

什么是调优?

  • 根据需求进行JVM规划和预调优
  • 优化JVM运行环境(慢、卡顿)
  • 解决JVM运行过程中的各种问题,如OOM
  1. JVM调优其实就是尽量减少Full GC次数和时间。
    Full GC会导致STW(stop the world),Java所有线程挂起,,用户就会有卡顿的感觉。
    minor GC也会导致STW,但是时间很短对程序运行影响较小。而Full GC时间较长,一般比minor GC
    慢10倍以上,应该尽量避免。
    一般生产环境中,几天才会触发一次FGC,甚至一周。

  2. 在jvm参数中配置,可以打印GC日志

    -XX:+PrintGCDetails
    -Xloggc:/{path}/gc.log

    参数总结:
    -XX:+PrintGC 输出GC日志
    -XX:+PrintGCDetails 输出GC的详细日志
    -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
    -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
    -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
    -Xloggc:…/logs/gc.log 日志文件的输出路径


[Times: user=0.00 sys=0.00, real=0.00 secs]分别表示
用户消耗的CPU时间 内核态消耗的CPU时间 操作从开始到结束所经过的墙钟时间(Wall Clock Time)

user是用户态耗费的时间,sys是内核态耗费的时间,real是整个过程实际花费的时间。user+sys是CPU时间,每个CPU core单独计算,所以这个时间可能会是real的好几倍。
CPU时间和墙钟时间的差别是,墙钟时间包括各种非运算的等待耗时,例如等待磁盘I/O、等待线程阻塞,而CPU时间不包括这些耗时

可以使用一些离线的工具来对GC日志进行分析,比如sun的gchisto( https://java.net/projects/gchisto),gcviewer( https://github.com/chewiebug/GCViewer ),这些都是开源的工具,用户可以直接通过版本控制工具下载其源码,进行离线分析。
必看:
https://www.jianshu.com/p/fd1d4f21733a
https://www.jianshu.com/p/088d71f20a47
https://www.jianshu.com/p/5bad514071ab
https://www.jianshu.com/p/8eabaf631d15
https://www.jianshu.com/p/26f95965320e
https://www.jianshu.com/p/fd1d4f21733a
https://www.jianshu.com/p/dbaabe4554b6

老年代默认是占整个堆的2/3的大小

如果程序启动时,频繁发生元空间的Full GC,就会启动很慢,需要调大元空间值。
每秒产生的对象较大,survior区放不下,所以放到老年代,但是这些对象其实都是垃圾。

JVM调优技巧与经验相关推荐

  1. JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧

    文章目录 前言 一.部分大厂对于 JVM GC 的面试题 1.1.百度 1.2.顺丰 1.3.京东 1.4.淘宝 1.5.阿里.蘑菇街 二.Garbage Collectors(GC)作何使用 三.G ...

  2. JVM 调优系列 1:“精通 JVM 调优,有过 JVM 调优经验”,简历敢写吗?薪资涨 5k 的技巧!

    文章目录 前言 一.部分大厂对于 JVM GC 的面试题 1.1.百度 1.2.顺丰 1.3.京东 1.4.淘宝 1.5.阿里.蘑菇街 二.Garbage Collectors(GC)作何使用 三.G ...

  3. 清华毕业大牛教你涨薪5K的JVM调优骚操作是什么!如何在简历写上熟悉(精通)JVM调优,有过线上调优经验!

    就在前天的时候,马士兵老师讲了一节公开课,分享了涨薪5K的JVM调优骚操作是什么!如何在简历写上熟悉(精通)JVM调优,有过线上调优经验! 主要包含的内容如下: 1. 为什么一个百万级TPS系统会频繁 ...

  4. java jvm调优面试题_【Java面试题第一期】有没有jvm调优经验?调优方案有哪些?...

    ​1. 调优时机: a. heap 内存(老年代)持续上涨达到设置的最大内存值: b. Full GC 次数频繁: c. GC 停顿时间过长(超过1秒): d. 应用出现OutOfMemory 等内存 ...

  5. 【经验】通过JVM调优,让凯哥个人博客响应速度提升了不少

    为什么你的个人博客访问慢? 不知道大家有没有注意到,在22.10.31 21点之后,凯哥的个人博客站点(凯哥Java:www.kaigejava.com)访问速度提升了不少.那是因为凯哥对站点做了优化 ...

  6. 史上最全JVM整体架构和调优参数说明,带你彻底理解JVM整体架构与调优技巧

    大家好,我是冰河~~ 从今天开始,我们正式开始<架构师进阶系列>技术文的更新,在<架构师进阶系列>中,我们首先一起来探讨有关JVM的知识. 很多小伙伴都认为JVM的知识很难,很 ...

  7. 9 个 Java 性能调优技巧,YYDS!

    来源 | DZone 大多数开发者认为性能优化是一个复杂的话题,它需要大量的工作经验和相关知识理论.好吧,这也不完全错.优化一个应用做到性能最优化可能不是件容易的任务,但是这并不意味着你没有相关的知识 ...

  8. java format 补足空格_11个简单的Java性能调优技巧

    想要保持程序高效运行?您可以采取一些步骤来消除瓶颈,缓存提示以及其他性能调整建议. 大多数开发人员期望性能优化是一个复杂的主题,需要大量的经验和知识.好的,那不是完全错误的.优化应用程序以获得最佳性能 ...

  9. Java面试必问JVM调优,那.NET5呢?

    JVM调优已经是普通Java工程师的必修课了,而.NET开源快5年了,CLR层面的优化到目前都不多见,甚至常用的性能调优工具都还没玩过..NET5马上来了,要想在互联网大潮中逆袭,光靠平台是不够的,开 ...

最新文章

  1. CSL-YOLO | 超越Tiny-YOLO V4,全新设计轻量化YOLO模型实现边缘实时检测!!!
  2. php 怎么开启错误提醒,php怎样开启错误提示
  3. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车红外避障实验(带后退掉头避障)
  4. 仿Jquery链式操作的xml操作类
  5. 祝融号火星车亮相,每小时仅移动40米,为何比乌龟还慢?
  6. 关于使用public class 和 class声明类的区别
  7. 201521123060 《Java程序设计》第12周学习总结
  8. 福昕高级PDF 专业版程序安装及注意事项
  9. matlab 时间轴 绘图,时间轴制作超详细教程,助你轻松画出专业时间轴!
  10. 视频会议软件Zoom存在安全隐患,我们是否需要停止使用
  11. 华为防火墙IPSec虚拟环境配置
  12. TOLUA的文件结构
  13. 用户可利用自己的计算机通过因特网采用,2013年春季江苏省高校计算机一级B考试理论题(附答案)_-_副本...
  14. 【读书笔记】第1章“自律100天”的华丽开启
  15. 思路如此简单的购买水果问题
  16. ckeditor4.6.2上传图片thinphp3.3.2
  17. Hibernate3与EJB3的关系
  18. python 定时任务实现方式
  19. 2021-09-09 黑马移动端头条项目-day10
  20. 西北陕甘宁地区有影响力的调查研究咨询公司

热门文章

  1. itextsharp php,C#_C#使用iTextSharp设置PDF所有页面背景图功能实例,本文实例讲述了C#使用iTextSharp - phpStudy...
  2. python程序设计基础电子版_Python 程序设计基础(董付国 著)完整版PDF[6MB]
  3. maven web项目保存log4j日志到WEB-INF
  4. android 中的组合控件的设计
  5. 我的Java教程,不断整理,反复学习,记录着那些年大学奋斗的青春
  6. 十九、面试必考,Java中的this关键字
  7. 机器学习之决策树(下)
  8. 聚类(上)K-mean算法
  9. sklearn模型的训练(上)
  10. Vue 学习第五天 学习笔记