- 博客(19)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 深入JVM:详解G1垃圾回收器原理
本文小豪将带大家认识各类垃圾回收器的基础概念与应用场景,同时重点讲解目前最为流行的G1垃圾回收器的工作原理。G1采用独特的内存管理策略,实现对整个堆空间的垃圾回收,主要将堆内存划分为多个大小相等的区域(称为Region),各个区域根据需要扮演不同的角色。G1垃圾回收器年轻代回收时,采用了三种关键技术,分别是记忆集、卡表和写屏障。
2024-05-25 23:36:26
3389
6
原创 从源码剖析synchronized底层原理
本文小豪将带大家探究synchronized关键字的底层实现原理,从HotSpot虚拟机源码分析其底层锁竞争与释放的执行流程。在使用多线程机制提升程序性能的同时,不可避免的会遇到线程安全问题。线程不安全是指在多线程环境下,多个线程执行一段程序,导致预期的结果不正确。造成线程安全问题的因素有5个:多线程抢占式执行、多线程同时修改同一个变量、非原子性操作、内存可见性和指令重排序
2024-08-26 09:58:43
265
原创 从源码剖析Java线程池的工作机制
本文小豪将带大家深入解读Java线程池ThreadPoolExecutor的工作原理,从源码分析其任务处理流程。在Java中,线程池的实现建立在Executor框架之上的,JDK为我们提供了一系列Executor框架的接口、实现类等,便于我们创建使用线程池。基于Executor框架,我们一般创建线程池常用两种方式:通过Executors工具类或ThreadPoolExecutor构造方法
2024-08-07 21:39:04
694
原创 从JDK源码探究Java线程与操作系统的交互
本文小豪将带大家探究Java线程与操作系统的关系,从JDK源码剖析Java线程的创建机制。线程是指操作系统中能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发执行多个线程,每条线程并行执行不同的任务。在操作系统中,线程的实现可以分为三种不同的模型,包括内核级线程、用户级线程和混合线程。
2024-07-14 23:27:27
1059
原创 深入JVM:详解JIT即时编译器
本文小豪将带大家认识JIT即时编译器,介绍主流HotSpot虚拟机内置的几款即时编译器,同时结合代码实例,着重讲解JIT优化手段。在Java程序执行过程中,当某些方法或代码块(它们都对应特定的字节码)被频繁调用时,这部分代码就被视为热点代码,JVM虚拟机会针对性的对这部分热点代码进行优化编译,将它们从字节码转换为本地机器码,然后将优化后的本地机器码缓存起来,后续再执行时可以直接从缓存中获取并运行,无需再次编译。
2024-06-25 21:02:37
1321
原创 深入JVM:线上服务性能问题诊断思路
本文小豪将继续贴近实战,带大家定位并处理线上服务性能问题,梳理诊断思路。常见的线上性能问题主要包含三种,分别是CPU使用率过高、服务响应时间过长和服务运行线程耗尽,一般当出现性能问题时,首要做的就是先排查是否是CPU方面出的问题,CPU过高会明显导致服务运行缓慢,另外如果确定是某个接口导致的响应时间长,但不方便具体跟踪定位是哪个方法执行慢,我们可以使用Arthas工具分析诊断问题。
2024-06-18 23:12:10
826
原创 深入JVM:线上内存泄漏问题诊断与处理
本文小豪将贴近实战,带大家定位并处理内存泄漏问题,同时本文也将介绍目前较为流行的MAT内存分析工具的基本用法,以及其采用的支配树原理。首先我们需要明确一个概念,即内存泄漏和内存溢出是两种不同的内存管理问题,虽然它们最终都会导致堆内存的OOM,但它们并不对等。内存泄漏指的是某些对象已经不需要再使用,但其还在GC Root引用链上,垃圾回收器无法识别并回收这些对象。
2024-06-09 19:18:20
1423
原创 一文搞懂Java应用ProtoBuf协议
本文将从ProtoBuf的概念开始介绍,逐步带大家搞清楚如何使用Java操作ProtoBuf协议。ProtoBuf即谷歌自己制定的一种数据格式,类似于Json、XML等,其最大的优势就是高效性,不同于Json和XML使用文本进行数据编码,ProtoBuf采用二进制进行编码,其传输速度、解析速度都比较快,序列化后的体积也更小。Java操作ProtoBuf分三步走,首先是生成proto对应Java文件,其次是引入第三方依赖库,最后编写测试代码。
2024-06-04 20:39:06
1858
1
原创 深入JVM:全面解析GC调优
本文小豪将带大家学习GC调优,了解常见的GC监控和日志分析工具,通常GC性能的评判指标包含三个方面,分别是吞吐量、暂停时间和内存占用,但往往三者不可兼得,一般更为关注其中的吞吐量和暂停时间。而GC调优主要是针对垃圾回收的性能优化,减少产生Full GC的频率和次数,一般我们可以从调整JVM内存大小、择优垃圾回收器和优化垃圾回收器参数这三方面入手优化。
2024-05-30 23:30:14
936
1
原创 深入JVM:详解垃圾判定与垃圾回收算法
本文小豪将带大家巩固JVM垃圾回收相关知识,探究Java对象如何被定位为垃圾对象,以及常见的垃圾回收算法。在Java程序中,当一个对象没有任何的引用指向它了,那这个对象就被认为是垃圾对象,JVM采用可达性分析法甄别对象是否存在引用,当然,在早期版本JVM采用的是引用计数法,不过引用计数法存在明显的缺点,已被淘汰。
2024-05-18 18:14:52
1351
原创 深入JVM:详解JVM内存模型及其演变过程
JVM内存模型定义了Java程序在运行过程中的内存分配、使用和回收策略。随着Java版本的迭代,不同版本的Java虚拟机内存模型也会存在差异,这就致使当我们在阅读技术博客时,如果作者没有明确指出所讨论的Java版本,很容易混淆这些概念。本文小豪将深入解析JVM内存模型的组成,探讨不同Java版本中内存模型的变化和演进,帮助大家全面理解和掌握JVM内存模型。
2024-05-13 21:37:02
1183
原创 深入JVM:从源码剖析双亲委派机制
本文小豪将带大家探索双亲委派,从源码剖析类加载器的双亲委派机制,同时结合案例,分析如何打破双亲委派。双亲委派是Java类加载器中比较重要的一个知识点,本质上是为处理类加载过程中某个类具体应该交由谁来加载。在JVM中,加载某一个类,先委托上一级的父加载器进行加载,如果上级加载器也有上级,则会继续向上委托,如果该类委托的父加载器没有被加载,子加载器就会尝试自己加载该类。即向上委托,向下加载
2024-05-07 20:30:54
1241
原创 深入JVM:从类加载机制解读类的生命周期
对于Java工程师而言,深入理解JVM(Java虚拟机)不仅是掌握Java程序运行机制的基础,也是提升系统性能、优化应用和解决复杂问题能力的重要一步,更是Java进阶之路的重中之重。本文小豪将带大家学习类的生命周期,包括类的验证、准备、解析和初始化这几个关键步骤,同时从类加载的角度剖析static静态代码、构造方法、初始化方法的执行顺序,进一步理解类加载机制。
2024-05-03 01:47:25
1137
原创 Spring深度学习:事务实现源码解析
本文小豪将带大家深度学习Spring事务相关知识,包括Spring对数据库事务控制的组装过程底层源码,以及编程式事务和声明式事务两种实现方法源码解析,深入剖析Spring处理事务的管理策略,认识Spring对于多种事务传播行为的处理方法,提升我们的架构设计能力。事务即一段不可分割的逻辑单元,要么完全执行,要么完全不执行,在数据库设计中用来保证数据库的完整性和一致性,执行时遵循ACID特性原则。
2024-04-27 14:04:55
978
原创 Spring深度学习:动态代理源码解析
本文小豪将带大家深度学习Spring动态代理相关知识,包括JDK和Cglib两种动态代理的底层实现原理,以及代理对象回调时拦截链执行过程的源码分析,深入研究动态代理的内部机制,进一步理解面向切面编程的思想,提升我们的架构能力
2024-04-20 13:17:23
880
2
原创 Spring深度学习:AOP创建过程源码解析
本文小豪将带大家深度学习Spring AOP相关知识,包括AOP标签解析及创建代理的底层源码,经过Spring AOP底层源码的解读,以此掌握更多的编程实践方案,同时进一步提升我们的架构能力。AOP实现核心业务和非核心业务的解耦,也提高了系统的可维护性,在Spring中AOP典型的应用就是事务机制,在后续深入学习Spring事务之前,我们有必要先行学习Spring AOP。
2024-04-13 17:44:38
1114
1
原创 Spring深度学习:循环依赖及源码解析
本文小豪将带大家深度学习Spring循环依赖相关知识,包括循环依赖的解决方案及Spring处理循环依赖的底层源码,学习过程中不仅仅是了解Spring处理循环依赖的设计,更重要的是学会理解框架的底层逻辑,从而提升我们的思维能力。
2024-04-09 16:27:12
1492
3
原创 Spring深度学习:Bean生命周期及源码解析
本文小豪将带大家深度学习Spring Bean相关知识,包括Bean的生命周期及Bean创建过程的底层源码,学习过程中不仅仅是了解Spring Bean的工作原理,更重要的是学会理解框架的底层逻辑,从而提升我们的思维能力。
2024-04-03 19:08:55
1479
原创 Spring深度学习:IOC容器及源码解析
大家经常戏称Java工程师为Spring工程师,毫无疑问,这句话体现出Spring框架在Java开发中的重要性和普及度。本文小豪将带大家深度学习Spring IOC底层源码,学习过程中不仅仅是了解Spring IOC的工作原理,更重要的是学会理解框架的底层逻辑,从而提升我们的思维能力。
2024-03-31 18:30:58
1137
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人