
Java虚拟机
文章平均质量分 94
深入理解Java虚拟机2
第七个香粽
学无止境~
展开
-
深入理解Java虚拟机系列 - 总结
深入理解Java虚拟机系列文章的一份精炼总结。如果一个类加载器收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个请求的时候,子加载器才会尝试自己去加载。什么情况下要打破?某些情况下父类加载器需要委托子类加载器去加载class文件。例如JDBC中的Driver接口的实现是由不同的数据库服务商来提供,有等数据库。原创 2024-01-01 15:58:03 · 1184 阅读 · 1 评论 -
Java - Thread.sleep(0)的意义是什么?
sleep(0),是关于RocketMQ源码中写的一段代码,说是用于预防GC的。安全点。可数/不可数循环。STW。navtive方法。趁此机会,对这方面做一个复习和查缺补漏。首先在总结下上面的案例,对于测试代码,出现主线程等待子线程的情况和安全点有关。ThreadOne和ThreadTwo。并在可数循环做一个耗时的操作。此时主线程进入休眠状态1秒钟。JVM有个参数,默认是1秒,1秒之后,JVM就会尝试在安全点停止,以便让Java线程进行缓存的清理。但是对于子线程而言,原创 2022-11-09 20:12:35 · 1830 阅读 · 7 评论 -
Java中的双重检索与延迟初始化
Java中的双重检索与延迟初始化一.前言二.双重检索2.1 非延迟化初始化2.2 双重检查锁定2.3 基于volatile解决双重检索的延迟初始化方案三 小总结一.前言今天看《Java并发编程的艺术》这本书的时候,看到双重检索这一块内容,我才恍然大悟一个问题:咱们平常写DCL单例的时候(双重检索),为啥要给实例加一个volatile修饰呢?还有这么多种单例模式,有的需要加static,有的需要加volatile,把我搞得有一丢丢混,现在搞懂了,也希望借此分享一下。二.双重检索首先说下双重检索的由来:原创 2020-12-03 15:28:44 · 463 阅读 · 0 评论 -
深入理解Java虚拟机系列(四)--Java内存模型和线程
深入理解Java虚拟机系列(四)--Java内存模型和线程系列文章目录系列文章目录深入理解Java虚拟机系列文章原创 2020-12-01 19:22:15 · 178 阅读 · 0 评论 -
深入理解Java虚拟机系列(三)--虚拟机类加载机制
深入理解Java虚拟机系列(四)--虚拟机类加载机制系列文章目录系列文章目录深入理解Java虚拟机系列文章原创 2020-11-30 17:19:14 · 487 阅读 · 0 评论 -
深入理解Java虚拟机系列(二)--垃圾收集器与内存分配策略
深入理解Java虚拟机系列(二)--垃圾收集器与内存分配策略系列文章目录系列文章目录深入理解Java虚拟机系列文章原创 2020-11-29 19:05:02 · 1174 阅读 · 0 评论 -
深入理解Java虚拟机系列文章
深入理解Java虚拟机系列文章1.Java内存区域和内存溢出异常原创 2020-11-28 19:00:54 · 461 阅读 · 0 评论 -
深入理解Java虚拟机系列(一)--Java内存区域和内存溢出异常
Java内存区域和内存溢出异常前言一.运行时数据区域1.1 程序计数器1.2 Java虚拟机栈1.3 本地方法栈1.4 Java堆1.5 方法区(也称永久代)1.6 运行时常量池1.7 (Java1.8)元空间小总结二.HotSpot虚拟机对象探秘2.1 对象的创建2.2 对象的内存布局2.2.1 对象头的第一部分:Mark Word2.2.2 对象头的第二部分:类型指针2.2.3 实例数据部分2.2.4 对齐填充部分2.3 对象的访问定位三.Java内存溢出异常模拟Java堆溢出模拟虚拟机栈和本地方法栈溢原创 2020-11-28 18:57:47 · 619 阅读 · 0 评论