JVM
文章平均质量分 95
问道玄霄
初见惊艳,再见依然
展开
-
深入理解Synchronized关键字
Synchronized同步器的意义如何解决线程并发安全问题synchronized原理详解synchronized底层原理Monitor监视器锁什么是monitor?ObjectMonitor对象记录锁状态对象头锁的膨胀升级过程偏向锁轻量级锁自旋锁锁消除同步器的意义临界资源:多个线程同时访问同一个共享,可变的资源;临界资源可以是对象,变量,文件等;引出的问题:多个线程对共享资源的读写,写写问题如何解决线程并发安全问题实际上,所有并发模式在解决线程安全问题时,都是采用序列化访问临界资源。即同原创 2021-06-05 01:34:20 · 644 阅读 · 1 评论 -
深入理解volatile与MESI缓存一致性协议
volatile与MESI缓存一致性协议volatile实例多级缓存结构总线锁多核CPU多级缓存一致性协议MESIMESI协议缓存状态MESI状态转换MESI状态切换举例MESI优化和引入的问题CPU切换状态阻塞解决存储缓存(Store Bufferes)Store Bufferesstore buffer过程图MESI失效volatilevolatile是Java虚拟机提供的轻量级的同步机制。不能保证原子性保证volatile修饰的共享变量对所有线程是可见的。也就是当一个线程修改 了一个被vo原创 2021-06-04 01:57:18 · 1745 阅读 · 0 评论 -
JMM模型与volatile详解(一)
JMM模型与volatile详解JMM模型JMM不同于JVM内存区域模型JMM模型图主内存工作内存Java内存模型与硬件内存架构的关系JMM存在的必要性数据同步八大原子操作同步规则分析JMM的可见性、原子性,有序性原子性可见性有序性JMM如何解决原子性&可见性&有序性问题原子性问题可见性问题有序性问题as-if-serialhappens-before 原则volatile关键字volatile的可见性示例不能保证原子性禁止指令重排JMM模型Java内存模型(Java Memory Mo原创 2021-06-03 02:23:29 · 465 阅读 · 1 评论 -
JMM模型与volatile详解(二)
volatile内存屏障volatile禁止指令重排的原因硬件层的内存屏障volatile内存语义的实现实现volatile的内存语义volatile写插入内存屏障后生成的指令序列示意图volatile读插入内存屏障后生成的指令序列示意图volatilevolatile是Java虚拟机提供的轻量级的同步机制。不能保证原子性保证volatile修饰的共享变量对所有线程是可见的。也就是当一个线程修改 了一个被volatile修饰共享变量的值,新值总是可以被其他线程立即得知。禁止指令重排序禁止指令原创 2021-06-03 02:20:26 · 331 阅读 · 0 评论 -
进程与操作系统模型
程序员必备的操作系统知识进程与线程进程与线程的区别什么是临界区、如何解决冲突?进程间通信有哪些方式?它们的区别?进程的调度算法有哪些?内存交换程序装入和链接程序的链接方式冯诺依曼计算机模型详解计算机五大核心组成部分CPU指令结构控制单元运算单元存储单元CPU缓存架构CPU读取存储器数据过程CPU为何要有高速缓存带有高速缓存的CPU执行计算的流程CPU运行安全等级操作系统内存管理执行空间保护用户态与内核态内核线程模型用户线程模型虚拟机指令集架构寄存器指令集架构栈指令集架构中断和轮询进程与线程什么是进程?原创 2021-06-02 19:17:23 · 353 阅读 · 0 评论 -
JVM执行引擎
JVM执行引擎JVM执行引擎Java代码编译和执行过程Java代码编译是由Java源码编译器来完成的Java字节码的执行是由JVM执行引擎来完成的什么是解释器?什么是JIT编译器?为什么说Java是半解释半编译性语言解释器现状JIT编译器解释器依然存在的必要性Hotspot JVM的执行方式编译器的概念热点代码及探测方式方法调用计数器热度衰减回边计数器HotSpotVM可以设置程序执行方式JVM执行引擎1)执行引擎是java虚拟机的核心组成部分之一3)JVM的主要任务是:负责装载字节码带其内部。 但字原创 2021-05-18 11:56:16 · 255 阅读 · 1 评论 -
JVM常量池
JVM常量池Class常量池与运行时常量池字面量符号引用字符串常量池三种字符串操作直接赋值字符串new String()intern方法字符串常量池位置字符串常量池设计原理String常量池问题的几个例子关于String是不可变的八种基本类型的包装类和对象池Class常量池与运行时常量池Class常量池可以理解为Class文件中的资源仓库。Class文件中除了包含类版本,字段,方法等描述信息,还有一项就是常量池(constant pool table),用于存放编译期生成的各种字面量(例如“1”,“2”原创 2021-05-17 17:49:10 · 258 阅读 · 0 评论 -
JVM调优与GC日志
JVM调优以及常量池讲解ArthasArthas的使用测试GC日志详解分析GC日志CMSG1JVM参数汇总查看命令ArthasArthas是Alibaba开元的Java诊断工具。采用命令行交互式模式,可以定位和诊断线上程序的问题。Arthas的使用下载# github下载arthas wget https://alibaba.github.io/arthas/arthas‐boot.jar # 或者 Gitee 下载 wget https://arthas.gitee.io/arthas原创 2021-05-17 16:32:44 · 310 阅读 · 0 评论 -
JVM-垃圾收集器ZGC浅析
垃圾收集器ZGCZGC收集器ZGC设计目标不分代ZGC内存布局NUMA-aware颜色指针读屏障ZGC运作过程ZGC触发时机ZGC收集器ZGC是JDK11新加入的低延迟垃圾收集器。ZGC设计目标支持TB级别的堆很少有上TB的硬盘,未来十年内ZGC够用了;最大GC停顿时间不超过10ms主要是因为他的停顿时间主要和GCRoot有关,和堆大小无关奠定未来GC特性的基础最糟糕情况下吞吐量降低15%不分代单代,即ZGC不存在年轻代和老年代的区分。先实现一个简单可用的版本,后续可能会分代;原创 2021-05-09 19:47:15 · 383 阅读 · 0 评论 -
JVM垃圾收集器G1
JVM垃圾收集器G1G1收集器G1的垃圾回收过程G1特点G1垃圾收集分类Young GCMixed GCFull GCG1收集器参数设置G1收集器优化建议G1使用场景每秒几十万并发的系统如何优化JVM如何选择垃圾收集器安全点与安全区域安全点安全区域G1收集器G1是面向服务器的垃圾收集器,主要针对配备多核处理以及大容器内存的及其,极高概率满足GC停顿时间要求,还具备高吞吐量特征;G1将Java堆划分为多个大小相等的独立区域Region,JVM最多可以有2048个Region;一般Region大小等原创 2021-05-09 17:35:07 · 3760 阅读 · 1 评论 -
JVM之垃圾收集器与三色标记法
垃圾收集器与三色标记法垃圾收集算法1.分代收集理论标记-复制算法标记-清除算法标记-整理算法垃圾收集器1.Serial收集器2.Parallel Scavenge收集器3.ParNew收集器4.CMS收集器CMS的相关核心参数三色标记法多标-浮动垃圾漏标-读写屏障写屏障写屏障实现SATB写屏障实现增量更新读屏障为什么G1用SATB?CMS用增量更新?记忆集与卡表卡表的维护垃圾收集算法如下图:1.分代收集理论根据对象存活生命周期的不同将内存分为几块:年轻代、老年代。根据两个年代的特点,选择不同的垃圾原创 2021-05-08 17:50:33 · 642 阅读 · 0 评论 -
JVM类加载机制-源码分析-打破双亲委派-Tomcat类加载
目录类加载机制类加载器和双亲委派机制类加载器的初始化过程扩展类加载器的创建扩展类加载器继承关系:应用类加载器的创建双亲委派机制双亲委派机制源码加载递归调用图设计双亲委派的目的自定义类加载器打破双亲委派机制Tomcat打破双亲委派机制模拟实现Tomcat的webappClassLoader加载自己war包应用内不同版本类实现相互共存与隔离类加载机制当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM;package com.jvm.jvm1;public原创 2021-05-04 16:31:23 · 260 阅读 · 1 评论