JVM
文章平均质量分 88
# JVM
早睡早起啦
感谢关注,csdn已经不上线了,不会在更新了。 csdn都是个人在大二到大四期间学习的笔记,有些内容可能并不是正确的,请理解下,技术文章在掘金(持续更新) https://juejin.cn/user/4248168663101239,如果想咨询up的话技术/生活/未来规划,wx: hakusai22.
展开
-
JVM总结(自用)
JVM笔记(自用)二. 性能监控和调优①. JVM监控工具_Jprofiler1. 数据采集方式2. 遥感监控3.内存视图4. 堆遍历(heap walker)5. cpu视图6. 线程视图②. Arthas(阿尔萨斯)二. 性能监控和调优①. JVM监控工具_Jprofiler1. 数据采集方式2. 遥感监控3.内存视图4. 堆遍历(heap walker)5. cpu视图6. 线程视图②. Arthas(阿尔萨斯)/原创 2021-12-08 16:02:19 · 531 阅读 · 1 评论 -
JVM基础知识---Class文件结构总结
类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名,由于 Java 语言的单继承,所以父类索引只有一个,除了 java.lang.Object 之外,所有的 java 类都有父类,因此除了 java.lang.Object 外,所有 Java 类的父类索引都不为 0。高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。原创 2021-08-07 11:29:54 · 230 阅读 · 1 评论 -
JVM基础知识---垃圾收集器
垃圾收集器一. GC垃圾回收算法和垃圾收集器关系二. 四种主要的垃圾收集器①. Serial:串行回收 -XX:+UseSeriallGC②. Parallel:并行回收 -XX:+UseParallelGC③. CMS:并发标记清除④. G1⑤. ZGC:(java 11 出现的)⑥. 垃圾收集器总结三. 查看默认垃圾收集器四. 默认垃圾收集器有哪些?五. 各垃圾收集器的使用范围六. 新生代下的垃圾收集器①. 串行GC(Serial)②. 并行GC(ParNew)③. 并行回收GC(Parallel)原创 2021-07-12 22:08:47 · 231 阅读 · 3 评论 -
JVM基础知识---Java内存溢出OOM
Java内存溢出OOM一. 经典错误二. 架构三. StackoverFlowError四. OutOfMemoryError①. java heap space②. GC overhead limit exceeded③. Direct buffer memory④. unable to create new native thread⑤. Metaspace一. 经典错误JVM中常见的两个错误StackoverFlowError :栈溢出OutofMemoryError:原创 2021-07-12 20:38:55 · 244 阅读 · 1 评论 -
JVM基础知识---强引用_软引用_弱引用_虚引用
强引用_软引用_弱引用_虚引用一. 强引用二. 软引用①. SoftReference三. 弱引用①. WeakReference②. WeakHashMap四. 虚引用①. PhantomReference②. 引用队列 ReferenceQueue一. 强引用当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,打死也不回收~!强引用是我们最常见的普通对象引用,只要还有一个强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。原创 2021-07-11 21:25:10 · 489 阅读 · 1 评论 -
JVM基础知识---JVM常见的参数配置
JVM参数调优一. JVM参数类型①. 标配参数②. X参数(了解)③. XX参数(重点)二. 查看运行的Java程序,JVM参数是否开启,具体值为多少?①. 编写阻塞Java程序②. jps -l 得到进程号③. jinfo -flag④. 运行程序的时候配置JVM参数⑤. jinfo -flags *** 命令⑥. JVM的XX参数之Xms,Xmx三. 查看JVM默认参数①. XX:+PrintFlagsInitial 主要是查看初始默认值②. -XX:+PrintFlagsFinal:表示原创 2021-07-11 21:04:54 · 1104 阅读 · 4 评论 -
JVM基础知识---判断对象是否已经死亡?(GC Roots)
GC Roots一. 什么是垃圾?二. 如何判断一个对象是否可以被回收?①. 引用计数法②. 枚举根节点做可达性分析(根搜索路径)三. 代码说明GC Roots的对象一. 什么是垃圾?简单来说就是内存中已经不再被使用的空间就是垃圾二. 如何判断一个对象是否可以被回收?①. 引用计数法Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法就是通过引用计数来判断一个对象是否可以回收。简单说,给对象中添加一个引用计数器每当有一个地方引用它,计数器原创 2021-07-11 20:21:25 · 148 阅读 · 1 评论 -
JVM基础知识---类加载器
类加载器一. 类加载过程二. 类加载器介绍①. BootstrapClassLoader②. ExtensionClassLoader③. AppClassLoader三. 类加载双亲委派机制一. 类加载过程一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。所有的类都由类加载器加载,原创 2021-06-21 13:50:19 · 173 阅读 · 1 评论 -
JVM基础知识---内存分配过程与回收
内存分配过程一. 堆内存结构图二. JVM内存分配过程三. JVM晋升老年代机制①. 动态对象年龄判定——长期存活的对象将进入老年代③. 大对象直接进入老年代④. Minor GC后,Survivor仍然放不下四. GC准确分类一. 堆内存结构图Java 堆是垃圾收集器管理的主要区域,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代:再细致一点有:Eden 空间、From Survivor、To Survivor 空间等。进一步划分的目的是更好地回收内存,或者更原创 2021-06-21 13:18:49 · 178 阅读 · 0 评论 -
JVM基础知识---垃圾回收的过程(判断对象是否死亡+垃圾回收算法+垃圾收集器)
垃圾回收的过程一. 判断对象是否死亡①. 引用计数器法②. 可达性算法分析③. 四个引用对象二. 垃圾回收算法进行回收①. 标记-清除算法②. 标记-复制算法③. 标记-整理算法④. 分代回收算法 垃圾回收的过程分为两步一. 判断对象是否死亡 判断对象死亡方法引用计数器法和可达性算法分析①. 引用计数器法给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。缺点:无法解决循环引用的问题,假设A原创 2021-06-21 11:40:12 · 311 阅读 · 1 评论 -
JVM基础知识---对象的创建过程
对象的创建过程一. 对象的创建过程①. 类加载检查②.分配内存③. 初始化零值④. 设置对象头⑤. 执行init方法二. 对象的内存布局①. 对象头②. 实例数据③. 对齐填充三. 对象的访问定位①. 使用句柄访问对象②. 使用直接指针访问对象一. 对象的创建过程①. 类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。上一篇博客类的加载全过原创 2021-06-21 10:44:16 · 150 阅读 · 1 评论 -
JVM基础知识---类的加载过程分析
类的加载过程分析一. 类的生命周期①. 一个类的生命周期②. 一个类的执行过程二. 加载三. 验证四. 准备五. 解析六. 初始化七. 卸载一. 类的生命周期系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。①. 一个类的生命周期②. 一个类的执行过程二. 加载主要是查找和导入Class文件加载” 是“类加载”过程的一个阶段。在加载阶段,虚拟机需要完成以下3件事情:通过一个类的全限定名来获原创 2021-06-21 09:21:19 · 263 阅读 · 0 评论 -
JVM基础知识---G1垃圾回收器
G1垃圾回收器一. G1垃圾回收器介绍二. G1的使用三. G1的特点①. Region 分区产生③. 对象分配策略④. Humongous巨型对象产生⑤. 并发执行⑥. 执行的流程1. 初始标记 (stop the word)2. 并发标记3. 最终标记 (stop the word)4. 筛选回收 (stop the word)四. 三色标记算法①. 对象分成三种类型②. 执行的流程③. 对象丢失问题解决方式五. 新生代 YGC六. 混合回收(Mixed GC)七. 触发 Full GC八. G1的优原创 2021-04-27 13:02:05 · 688 阅读 · 0 评论 -
JVM基础知识---CMS垃圾回收过程
CMS垃圾回收过程一. CMS介绍二. 实现机制三. 周期性Old GC_CMS执行过程①.初始标记②.并发标记③.并发预清理④.重新标记⑤.并发清理⑥.并发重置三. CMS缺点四. 使用的场景一. CMS介绍CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。二. 实现机制根据GC的触发机原创 2021-04-26 17:45:43 · 509 阅读 · 0 评论 -
JVM基础知识---JVM内存区域划分
JVM内存区域划分一. 运行时数据区域分析二. 程序计数器三. Java虚拟机栈①. 栈帧(Stack Frame)②. 局部变量表③.变量槽(Variable Slot)④. reference(对象实例的引用)⑤. 方法出口四. 本地方法栈五. 堆六. 方法区(JDK1.8版本前)七. 运行时常量池(JDK1.8版本前)八. 直接内存一. 运行时数据区域分析JDK1.8之前的运行时数据区域JDK1.8版本的运行时数据区域线程私有的属性程序计数器虚拟机栈本地方法栈线程原创 2021-03-08 19:16:48 · 227 阅读 · 0 评论