JVM调优目的

减少STW (Stop The Work),减少full gc的次数和缩短full gc的时间
一个4核8G的订单系统,假设给JVM运行内存为3个G,按照上图比例老年代可分2G,
Eden 800M,S0,S1各100M,线程运行每秒产生60M对象,大概运行13秒就会占满Eden区,
前12秒产生的对象在做一个minor gc后被当作垃圾对象处理掉,第13秒产生的对象不是垃圾对象,
会被放到S0区

第13秒产生的60M对象大于S0区的50%会被放到老年代old,参考如下1.4对象动态年龄判断,
因此每隔13秒会有60M对象会被放到老年代old,大概7到8分钟就会放满老年代,
老年代放满后就会产生一次full gc,此时老年代里99%的对象是垃圾对象,会被清理掉
而一次full gc,会收集整个堆的垃圾对象,时间过长,而JVM调优的目的就是减少fullgc次数

面试题

能否对JVM调优,让其几乎不发生full gc?

答:能,如下图,当我们增加年轻代的内存(Eden,S0,S1)时, 线程运行每秒产生60M对象,大概运行25秒
就会占满Eden区,此时前24秒产生的对象在做一个minor gc后被当作垃圾对象销毁掉,第25秒产生的对象
会被放到S0区,第25秒产生的60M对象小于S0区的50%不会被放到老年代,当Eden再一次放满,
此时minor gc会销毁Eden中前24秒的垃圾对象和S0中的对象,Eden第25秒产生的对象会被放到S1区,
当Eden再一次放满,参考以上说明minor gc会销毁Eden中前24秒的垃圾对象和S1中的对象,
Eden第25秒产生的对象会被放到S0区,如此流转处理,让其几乎不发生full gc

总结:增大年轻代的内存,即调整Xmn的大小为2048m可以解决这个问题

JVM调优案例详解及面试题相关推荐

  1. JVM 调优参数详解

     http://yufenfei.iteye.com/blog/1746914 GC有两种类型:Scavenge GC 和Full GC 1.Scavenge GC 一般情况下,当新对象生成,并且 ...

  2. jvm调优工具详解及调优实战

    前置工作 首先本地启动一个java项目 欢迎关注个人公众号[好好学技术]交流学习 jps查看进程 dongfengfan@dongfengdeMacBook-Pro ~/Desktop> jps ...

  3. JVM内存模型和性能调优:JVM调优工具详解及调优实战:jstat调优小实战- 第40篇

    一.准备工作 准备一个工程jvm-full-gc,核心代码: @RestController public class IndexController {@RequestMapping("/ ...

  4. 如何开启jvm日志_直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解...

    JVM系列 直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势.及使用场景 直通BAT必考题系列:JVM的4种垃圾回收算法.垃圾回收机制与总结 直通BAT必考题系列:深入详解JVM内存模型与JVM ...

  5. JVM调优思路、订单秒杀jvm调优案例

    文章目录 1. jvm调优思路 2. 订单的秒杀模块jvm调优案例 1. jvm调优思路 jvm调优其实更多的是对GC的优化,尤其是尽量减少full GC. 大多数情况下,对象在Eden区分配,当Ed ...

  6. 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解

    JVM系列 直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势.及使用场景 直通BAT必考题系列:JVM的4种垃圾回收算法.垃圾回收机制与总结 直通BAT必考题系列:深入详解JVM内存模型与JVM ...

  7. jvm与Tomcat调优【详解】——有这一篇就够了

    jvm与Tomcat调优 一.JVM性能调优 1.1 什么是JVM? 1.2 JVM调优工具 1.3 JVM调优经验 1.4常用JVM参数参考: 1.5 Java文件编译的过程 1.6 为什么说jav ...

  8. 深入理解JVM虚拟机14:JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...

  9. JVM从入门到精通(七):GC常用参数,Method Area,JVM调优案例分析

    GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:T ...

  10. Apache服务基础调优参数详解

    一.准备工作:准备一台服务器(Centos6.5系统)IP:192.168.2.101 1.安装服务器端:httpd [root@http ~]# yum -y install httpd 2.安装浏 ...

最新文章

  1. gitflow分支管理模型
  2. ISelectionSet接口
  3. python socket.socket()函数 套接字详解及TCP、UDP程序示例(粘包等)
  4. 关于工作的选择之软件开发还是软件维护的建议
  5. 王道考研 计算机网络1 计算机网络概念,组成,功能和分类
  6. grpc php 返回值过大,使用grpc实现php、java、go三方互调
  7. js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例
  8. chrome vue插件_VS Code 前端常用插件推荐
  9. 在objective-C中#pragma mark是什么意思?
  10. 这7本O’Reilly推出的免费Python电子书,够你看了
  11. java获取本地mac地址
  12. Visual Studio Code远程开发配置
  13. Serverless 全能选手,再添一“金”
  14. ubuntu安装labelImg
  15. 中文自然语言处理入门实战
  16. Unirech腾讯云代充-云服务器登陆及远程连接常见问题
  17. 相机快门_向我的智能手机添加远程相机快门的最简单方法是什么?
  18. 射频原理图设计checklist
  19. 【海康摄像头二次开发】移植海康摄像头Android SDK并实现多屏显示
  20. 从苏宁电器到卡巴斯基第07篇:我在佳木斯的日子(下)

热门文章

  1. 读懂以太坊的客户端多样性,为何如此重要?
  2. 电脑 变速 java游戏_极品飞车-变速FX版
  3. 使用计算机时,突然断电,存储在下列设备中的信息将丢失的是,下列存储设备中断电后其保存的信息会丢失的是哪一项...
  4. 【转】word公式大括号左对齐
  5. 前端获取文件的MD5值
  6. 96PIN直插DIP千兆四口网络变压器 千兆交换机路由器网络滤波器
  7. 如何用优盘安装服务器操作系统,使用优盘安装服务器
  8. 淘宝评论爬取(2020-08-21)update 2020-09-18
  9. java实现登录注册界面
  10. Chrome 插件下载网站+6个实用插件推荐