JVM调优学习之路
文章平均质量分 93
JVM调优学习之路
PoetryAndTheDistance
三年Java后端,一年数据。一年交付。没别的爱好,只是喜欢啃骨头。
展开
-
八:JVM调优实战及常量池详解
目录阿里巴巴Arthas详解Arthas使用场景Arthas使用GC日志详解如何分析GC日志CMSG1JVM参数汇总查看命令Class常量池与运行时常量池字符串常量池字符串常量池的设计思想三种字符串操作(Jdk1.7 及以上版本)字符串常量池位置字符串常量池设计原理String常量池问题的几个例子关于String是不可变的八种基本类型的包装类和对象池阿里巴巴Arthas详解Arthas是Alibaba在 2018 年 9 月...转载 2021-05-19 21:02:08 · 240 阅读 · 0 评论 -
七:JVM调优工具详解及调优实战
目录JVM调优工具详解前置启动程序Jmap堆信息堆内存dump可以用jvisualvm命令工具导入该dump文件分析Jstack远程连接jvisualvmjstack找出占用cpu最高的线程堆栈信息JinfoJstat垃圾回收统计堆内存统计新生代垃圾回收统计新生代内存统计老年代垃圾回收统计老年代内存统计元数据空间统计JVM运行情况预估内存泄露到底是怎么回事demo代码下载:jvm-full-gc.zipJVM调优工.转载 2021-05-19 20:42:00 · 326 阅读 · 0 评论 -
六:垃圾收集器G1&ZGC详解
目录G1收集器(-XX:+UseG1GC)G1垃圾收集分类YoungGCMixedGCFull GCG1收集器参数设置G1垃圾收集器优化建议什么场景适合使用G1每秒几十万并发的系统如何优化JVMZGC收集器(-XX:+UseZGC)ZGC目标不分代(暂时)ZGC内存布局NUMA-awareZGC运作过程颜色指针为什么有2个mark标记?颜色指针的三大优势:读屏障ZGC存在的问题解决方案ZGC参数设置ZGC触发时机转载 2021-05-18 21:03:09 · 590 阅读 · 0 评论 -
五:垃圾收集器ParNew&CMS与底层三色标记算法详解
目录垃圾收集算法分代收集理论标记-复制算法标记-清除算法标记-整理算法垃圾收集器Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)Parallel Scavenge收集器(-XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代))ParNew收集器(-XX:+UseParNewGC)CMS收集器(-XX:+UseConcMarkSweepGC(old))亿级流量电商系统如何优化转载 2021-05-18 20:45:35 · 347 阅读 · 0 评论 -
四:class文件结构(简单class文件)
目录一:源代码二:通过我们javap -verbose TulingByteCode .class反编译三:class文件通过16进制查看器打开如下四:Class文件结构访问标识符号解析 Access_flag五: This class name的描述当前的所属类第六部分: super class name (当前class的父类名字)第七部分:接口信息(**标注 我们的当前class没有实现接口为了演示效果我用的另外一个类演示) 这个类我们实现了二个接口 分别为ITulingI原创 2021-05-18 20:28:09 · 372 阅读 · 0 评论 -
三:JVM对象创建与内存分配机制深度剖析
目录对象的创建1.类加载检查2.分配内存划分内存的方法:解决并发问题的方法:3.初始化零值4.设置对象头5.执行方法对象内存分配对象栈上分配对象在Eden区分配大对象直接进入老年代长期存活的对象将进入老年代对象动态年龄判断老年代空间分配担保机制对象内存回收引用计数法可达性分析算法常见引用类型finalize()方法最终判定对象是否存活如何判断一个类是无用的类对象的创建对象创建的主要流程:1.类加载检查 .转载 2021-05-17 22:32:51 · 278 阅读 · 0 评论 -
jvisualvm安装Visual GC插件
目录1、找到新的更新地址2、进入jvisualvm的插件管理3、安装VisualGC插件4、重启即可看到VisualGC5、VisualGC1、找到新的更新地址 visualvm新访问地址:https://visualvm.github.io/index.html 进入“Plugins”,找到对应自己JDK版本的更新地址2、进入jvisualvm的插件管理 "工具" - "插件" 在"设置"中修改url地址为刚才我们在github上找到的对应.原创 2021-05-17 22:07:49 · 440 阅读 · 3 评论 -
JVM指令手册
目录栈和局部变量操作将常量压入栈的指令从栈中的局部变量中装载值的指令将栈中的值存入局部变量的指令通用(无类型)栈操作类型转换整数运算逻辑运算移位操作按位布尔运算对象和数组对象操作指令控制流条件分支指令比较指令无条件转移指令表跳转指令异常方法调用与返回方法调用指令方法返回指令JVM指令助记符操作数栈到变量:常数到操作数栈:从操作数栈存存储到数组:栈和局部变量操作 将常量压入栈的指令 aconst_n原创 2021-05-17 21:43:22 · 127 阅读 · 0 评论 -
二:JVM内存模型深度剖析与优化
目录一、JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型二、JVM内存参数设置一、JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型补充一个问题:在minor gc过程中对象挪动后,引用如何修改?对象在堆内部挪动的过程其实是复制,原有区域对象还在,一般不直接清理,JVM内部清理过程只是将对象分配指针移动到区域的头位置即可,比如扫描s0区域,扫到gcroot引用的非垃圾对象是将这些对象复制到s1或老年代,最后扫描完了将s0区域的对象转载 2021-05-17 21:36:01 · 214 阅读 · 0 评论 -
一:从JDK源码级别彻底剖析JVM类加载机制
类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。package com.tuling.jvm;public class Math { public static final int initData = 666; public static User user = new User(); public int compute() { //一个方法对应一块栈帧内存区域 int a = 1;转载 2021-05-17 21:27:56 · 284 阅读 · 0 评论