摘要: 1. 概述 物理机的执行引擎是直接建立在操作系统,处理器,缓存,指令集上。而虚拟机的执行引擎是软件实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系 在不同虚拟机中,执行引擎在执行字节码的时候,通常有解释执行(通过解释器执行)和编译执行(即通过编译器产生本地代码执行),也可能两者兼备。 阅读全文
posted @ 2026-04-07 17:55 不会coding的喵酱 阅读(4) 评论(0) 推荐(0)
摘要: 类加载器最重要的功能就是加载的过程,也就是通过完全限定名去获得一个class对象的二进制流。 1. 类与类加载器 在jvm中,是通过类本身和加载类的类加载器来确认一个类的唯一性。每一个类加载器,都有它的类名称空间。 2. 双亲委派模型 类加载器(没有模块化之前): 启动类加载器(Bootstrap 阅读全文
posted @ 2026-04-07 17:42 不会coding的喵酱 阅读(1) 评论(0) 推荐(0)
摘要: 1. 概述 java虚拟机的类加载过程指的是将二进制的class文件加载,校验,转换解析,初始化的过程。 在java语言中,加载,连接,初始化,这些过程都是在实际运行期完成的。也就会产生格外的内存开销,但是由于动态连接和动态加载的行为也为java提供了很高的动态拓展。 2. 类加载的时机 类型的生命 阅读全文
posted @ 2026-04-07 17:37 不会coding的喵酱 阅读(1) 评论(0) 推荐(0)
摘要: 自己在学习《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) (华章原创精品) - 周志明》时的一些思考和总结 1. 无关性的基石 平台无关性 字节码是构成平台无关性的基石,不同平台的java虚拟机,都统一支持的程序存储格式--字节码 语言无关性 不管是什么语言,只要能编译成class文件 阅读全文
posted @ 2026-04-07 16:59 不会coding的喵酱 阅读(1) 评论(0) 推荐(0)
摘要: 自己在学习《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) (华章原创精品) - 周志明》时的一些思考和总结 1. 经典垃圾收集器 首先必须上这张图 1.1 Serial收集器 最简单最基础的垃圾收集器,作用于新生代,gc时需要暂停所有的用户线程,且是单线程垃圾回收,。 serial单线 阅读全文
posted @ 2026-04-07 16:43 不会coding的喵酱 阅读(2) 评论(0) 推荐(0)
摘要: 自己在学习《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) (华章原创精品) - 周志明》这本书时候的一些思考和总结 1. 哪些对象需要被回收 1.1 垃圾回收时需要注意的问题 聚焦垃圾回收的三个问题 哪些需要回收(对应就是 如何判断对象是否存活) 什么时候回收(safepoint 相关 阅读全文
posted @ 2026-04-06 13:20 不会coding的喵酱 阅读(4) 评论(0) 推荐(0)
摘要: 1. OutOfMemoryError异常 除了程序计数器外,运行时数据区都可能发生oomError异常 以下是对于运行时内存各个区域OOM异常的排查逻辑。 1.1 Java堆溢出 首先要排查的是发生了内存泄露还是内存溢出。 通过dump堆转储快照进行分析。 内存泄露:需要被回收的内存因为某些引用关 阅读全文
posted @ 2026-04-06 12:39 不会coding的喵酱 阅读(6) 评论(0) 推荐(0)
摘要: 1. 对象创建/内存布局/访问方式 1.1 对象的创建 检查是否执行类加载流程 首先当jvm执行到new指令时候,会根据参数定位常量池中的类的符号引用,通过这个符号引用,判断对应的类是否有经历加载,连接,初始化的流程,如果没有,则先执行类加载过程。 当类加载通过后,就是为新的对象分配内存,两种分配内 阅读全文
posted @ 2026-04-06 12:34 不会coding的喵酱 阅读(1) 评论(0) 推荐(0)
摘要: 1. 运行时数据区域 虚拟机栈 本地方法栈 方法区 堆 程序计数器 其中,虚拟机栈,程序计数器,本地方法栈是线程私有的。方法区,堆是被所有线程共享的。 1.1 程序计数器 程序技术器是线程私有的,指向当前执行的字节码指令地址,字节码解释器通过改变程序计数器的值来实现分支,循环,跳转。也是运行时数据区 阅读全文
posted @ 2026-04-06 12:28 不会coding的喵酱 阅读(3) 评论(0) 推荐(0)