JVM调优


JVM调整FULL GC的执行效率,调整FULL GC的执行时间?GC垃圾回收机制;

JVM可以分为两块区域,一块是线程共享区(所有线程共享的),一块分为线程私有区(每个线程都有的);

线程共享区(线程不安全)包括方法区(方法区包括常量池,全类名)和Java堆(堆中存储所有的对象包含需要调优的对象);

线程私有区(线程安全)包含Java栈(用来存储栈帧),本地方法栈(对接C语言的接口,native栈),程序计数器;

栈帧:

栈帧等于方法(main方法或者其他方法),存储了局部变量表,操作数栈(执行JVM指令的存储空间),动态链接(记录多态之间的联系),返回地址(记录执行的代码行数的)

栈溢出的情况(操作数栈):

  1. 递归 ------>> 栈帧溢出
  2. 构建了易删的属性,操作数栈溢出(因为Java栈每个线程只有1M,超过1M就溢出了):因为是线程安全的(私有的)

线程共享区

方法区(1.8 合并到堆 元空间 (永久代))

堆:存储所有对象(GC存储的对象)

堆分为三个区:年轻代(Eden)、老年代(To)、幸存者区(From)(幸存垃圾)

  1. 新创建的Demo存储在年轻代,当年轻代(Eden)如果存满了会执行轻GC(要是被使用或者被引用就会放到幸存区)
  2. 如果幸存区满了,也会执行轻GC;要是执行GC回收不了了,会放到To区;
  3. 要是To区也满了,会进行位置交换,原有的To变成From,原有的From变成To,再执行轻GC,如果执行了15次GC,对象还没有被回收,进入老年代(To),等待fullGC执行。

总结:执行频率越少越好,执行时间越短越好

调优工具:jvs、jconsole、jstask、阿尔萨斯

JDK 自带了很多监控工具,都位于 JDK 的 bin 目录下,其中最常用的是 jconsole 和 jvisualvm 这两款视图监控工具。

jconsole:用于对 JVM 中的内存、线程和类等进行监控;

jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。

jconsole

调优的方向

调整年轻代的大小、老年代的大小、方法区的大小;

频繁GC的场景:方法区太小,常量数据太多又回收不了。

【top2】JVM调优相关推荐

  1. 记一次简单的 JVM 调优经历

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://zhenbianshu.github.io 背景 最近对负责的项目进行了一次性能优化,其中包括对 JVM 参数 ...

  2. 一次线上 JVM 调优实践,FullGC 40 次/天到 10 天一次的优化过程

    点击关注公众号,Java干货及时送达 来源 | https://blog.csdn.net/cml_blog/article/details/81057966 通过这一个多月的努力,将 FullGC ...

  3. SpringBoot项目优化和Jvm调优(亲测,真实有效)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:星朝 原文:cnblogs.com/jpfss/p/9753 ...

  4. JVM调优,面到了阿里性能优化师!

    小K 菜哥,我看你朋友圈,你好像换工作了? 菜哥 对啊,前阵子被产品经理烦的头疼,就想换工作了.刚好找到一个不错的. 小K 给我说说呗,让我也参考一下,我现在工资才15K,主管死坑,我也想换工作了 菜 ...

  5. Jvm 系列(七):Jvm 调优-工具篇

    工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题 ...

  6. tomcat jvm调优

    JVM调优总结 堆(Heap)内存和非堆(Non-heap)内存 堆内存就是Java代码的,留给开发人员使用: 非堆内存是留给JVM自己使用的(方法区.JVM内部处理或优化所需要的内存.每个类结构以及 ...

  7. JVM调优总结(7):调优方法

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...

  8. jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    2019独角兽企业重金招聘Python工程师标准>>> 文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我 ...

  9. 几种常见的JVM调优场景(建议收藏)

    前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 最近很多小伙伴跟我说,自己学了不少JVM的调优知识,但是在实际工作中却不知道何时对JVM进行调优.今天,我就为大家介绍几种JVM调优的场景 ...

最新文章

  1. ExtJS4.x动态加载js文件
  2. boost::test模块测试功能模板测试用例
  3. WPF学习笔记-第二周【基本笔刷】
  4. AdrenoProfiler对opengles的性能分析
  5. python安装在什么地方_python模块安装目录在哪里
  6. 声源测向: TDOA-GCC-PATH方法
  7. 东方卫视收视率查询_全国电视台收视率排名(最新排行榜)
  8. android 常用机型尺寸_android手机屏幕密度和逻辑尺寸
  9. 计算机一级改扩展名,怎么改文件扩展名,教您电脑win7改文件扩展名的方法
  10. 小程序数据监测工具分析
  11. word硬回车是怎么产生的_怎么将word文档中的软回车替换成硬回车
  12. Keil5 平台 S3C2440裸机程序开发环境配置
  13. CVTE面试总结(全网面经,已收offer)
  14. 网易邮箱大师上使用icloud邮箱
  15. python保存turtle绘制的图片_turtle绘图保存png图片
  16. Axure如何画出页面的线框图
  17. 富怡CAD计算机在哪,富怡CAD软件如何与富怡数字化仪进行连接
  18. 【原】机器学习公开课 目录(课程笔记、测验习题答案、编程作业源码)...持续更新......
  19. scrapy爬取某宝心得
  20. Linux基础(指令+工具)

热门文章

  1. webp批量转换成jpg的方法
  2. YUV格式详解【转】
  3. MacBook如何快速添加指纹!
  4. 网页中在线玩美少女战士
  5. 什么是cross join,inner join,left join,right join以及full outer join
  6. 6s管理项目推进步骤
  7. Mycat读写分离查询数据不一致问题,查询强制走主库
  8. pytest学习和使用12-Unittest和Pytest参数化详解
  9. 第一型曲线积分的思路总结
  10. 浅谈幼儿园自主游戏中教师的有效介入