JVM学习笔记
文章平均质量分 80
See_NUMB
这个作者很懒,什么都没留下…
展开
-
Shenandoah 和 ZGC 收集器总结
阅读前提:了解G1 等收集器。Shenandoah前言: Shenandoah 并不是Oracle 官方的收集器,所以 OracleJDK 甚至明确拒绝使用这个高效的垃圾收集器,商用的话可以使用OpenJDK。该收集器与 G1 的不同有:G1的回收阶段是可以多线程并行的,但是不能与用户线程并行,但是Shenandoah 回收阶段是可以与用户线程并发的,使用了转发指针等技术。Shenandoah 默认不使用分代收集,然而G1 是分新生代和老年代这些的,所以没有专门的新生代和老年代的 Regi原创 2021-09-03 09:38:27 · 336 阅读 · 0 评论 -
JDBC破坏双亲委派机制--源码解析
JDBC破坏双亲委派机制java有自己的一套 资源管理服务JNDI 等等,是由启动类加载器加载的,说明类是放在rt.jar包中。java提供Driver接口,厂商根据自己的需求实现功能。双亲委派机制:当前类加载器收到类加载的请求后,先不自己尝试加载类,而是先将请求委派给父类加载器,调用父类的 loadClass() 方法,这是一个递归的过程(因此,所有的类加载请求,都会先被传送到启动类加载器),只有当父类加载器加载失败时,当前类加载器才会尝试自己去自己负责的区域加载。所以判断是否破坏双亲委派机制的一个原创 2021-09-01 19:08:00 · 518 阅读 · 1 评论 -
在JDBC中发现SPI服务
什么是SPI?SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。在Dubbo、JDBC中都使用到了SPI机制,java就是通过 ServiceLoader.load() 方法获取到实现类的实例的,达到调用外部服务接口的目的。简单看看在JDBC是如何实现SPI服务的。JDBC连接准备 String url = "jdbc:mysql.原创 2021-08-31 16:48:15 · 139 阅读 · 2 评论 -
线程安全与锁优化有哪些?
文章目录13. 线程安全和锁优化13.1 java语言中的线程安全13.1.1 不可变13.1.2 绝对线程安全13.1.3 相对线程安全13.2 线程安全的实现方法13.2.1 互斥同步13.2.2 非阻塞同步13.3 锁优化13.3.1 自旋锁13.3.2 锁消除13.3.3 锁粗化13.3.4 轻量级锁13.3.5 偏向锁13. 线程安全和锁优化线程安全的简单定义:多个线程同时访问一个对象的时候,如果不考虑线程的交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的原创 2021-08-31 11:59:55 · 380 阅读 · 0 评论 -
破坏双亲委派模型的情况
破坏双亲委派模型双亲委派主要出现过三次较大规模的“被破坏”的情况。JDK1.2之后,为避免loadClass()被子类覆盖的可能,建议用户重写findClass()方法JNDI作为java的标准服务,需要调用启动类加载器不认识的外部接口(其他厂商实现的)IBM公司OSGI实现模块化热部署的关键是自定义类加载器机制,更换Bundle(程序模块)时,类加载器也会被换掉,然而类加载机制与双亲委派机制不同。第一种情况问题:类加载器的概念和抽象类的概念在java的第一个版本中就出现了,但是在jdk原创 2021-08-31 10:01:24 · 500 阅读 · 1 评论 -
String的特性及字符串常量池(intern()的使用、字符串的拼接详解)
文章目录12. String的特性12.1 String的基本特性12.1.1 StringTable12.2 String的内存分配12.3 字符串的拼接12.4 intern()的使用12.5 new String()12. String的特性12.1 String的基本特性String声明为final的,不可被继承String s1 = "ILOVEYOU";//字面量的定义方式String s2 = new String("ILOVEYOU");String实现了serial原创 2020-10-29 18:46:59 · 501 阅读 · 0 评论 -
java虚拟机JVM执行引擎(工作过程、JIT等)
文章目录11. 执行引擎11.1 执行引擎概述11.2 执行引擎的工作过程11.3 java代码编译和执行的过程11.4 JIT编译器11.5 方法调用计数器11.6 回边计数器11.6 HotSpot JM中JIT分类11.7 总结11. 执行引擎11.1 执行引擎概述执行引擎是java虚拟机核心的组成部分之一。虚拟机的执行引擎则是由软件自行实现的。执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。11.2 执行引擎原创 2020-10-29 12:51:31 · 703 阅读 · 0 评论 -
java虚拟机JVM方法区(OOM、垃圾回收等)
文章目录8. 方法区8.1 方法区的基本理解8.2 方法区的大小的设置与OOM8.3 方法区8.4 常量池8.5 运行时常量池8.6 方法区的演进8.7 方法区的垃圾收集8. 方法区8.1 方法区的基本理解方法区(Method Area)与Java堆一样,是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,原创 2020-10-25 15:43:52 · 584 阅读 · 0 评论 -
java虚拟机JVM堆(概述、GC、内存、TLAB和代码的优化)
文章目录7. 堆7.1 堆的核心概述7.1.1内存细分7.2设置堆内存的大小与OOM7.3 年轻代和老年代7.4 GC7.4.1 Minor GC触发的机制7.4.2 Major GC触发的机制7.4.3 Full GC触发机制7.5 内存分配策略7.6 TLAB7.7堆空间的参数设置7.8 代码的优化7. 堆7.1 堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存原创 2020-10-18 16:00:31 · 775 阅读 · 2 评论 -
java虚拟机栈的内部结构(局部变量表、操作数栈、动态链接、方法返回地址)
文章目录4.6 栈帧的内部结构4.6.1 局部变量表4.6.2 操作数栈4.6.3 动态链接方法的调用虚方法和非虚方法动态语言和静态语言方法重写的本本质4.6.4 方法返回地址4.6.5 一些附加信息4.6 栈帧的内部结构内部结构有以下几个部分组成:局部变量表(Local Variables)操作数栈(Oprand Stack)(或表达式栈)动态链接(Dynamic Linking)(或指向运行时常量池的方法引用)方法返回地址(Return Address)(或方法正常退出或异常退出的定义)原创 2020-10-09 09:15:02 · 1230 阅读 · 0 评论 -
java虚拟机栈(优点、设置栈内存大小、栈存储及运行原理)
文章目录1. 虚拟机栈1.1 优点1.2 Java虚拟机可能出现的异常1.3 设置栈内存大小1.4 栈存储的内容1.5栈运行原理1. 虚拟机栈优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。栈是运行时的单位,而堆是存储的单位Java虚拟机栈(Java virtual Machine stack),早期也叫Java栈。每个线程在创建时都会创建一个虚似机栈,其内部保存一个个的栈帧(stack Frame) ,对应着一次次的Java方法调用。虚拟机栈的生命周原创 2020-10-09 09:06:57 · 1185 阅读 · 0 评论 -
JVM中的双亲委派机制及沙箱安全机制
双亲委派机制工作原理:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模#mermaid-svg-iPaE43c15pzT2Ask .label{font-family:'trebuchet ms', verdana, arial;f原创 2020-10-07 19:24:54 · 347 阅读 · 1 评论 -
JVM中类加载器系统(类加载过程、类加载器分类及ClassLoader)
文章目录类加载器系统类加载过程1.加载2.连接3.初始化类加载器的分类1.启动类加载器(引导类加载器,Bootstrap ClassLoader)2.扩展类加载器(Extension ClassLoader)3.应用程序类加载器(系统类加载器,AppclassLoader)4.自定义类加载器ClassLoader类加载器系统类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于他是否可以运行,则由Ex原创 2020-10-07 17:15:01 · 886 阅读 · 0 评论