摘要: 自己在学习《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) (华章原创精品) - 周志明》时的一些思考和总结 1. 经典垃圾收集器 首先必须上这张图 1.1 Serial收集器 最简单最基础的垃圾收集器,作用于新生代,gc时需要暂停所有的用户线程,且是单线程垃圾回收,。 serial单线 阅读全文
posted @ 2026-04-07 16:43 不会coding的喵酱 阅读(11) 评论(0) 推荐(0)
摘要: 自己在学习《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) (华章原创精品) - 周志明》这本书时候的一些思考和总结 1. 哪些对象需要被回收 1.1 垃圾回收时需要注意的问题 聚焦垃圾回收的三个问题 哪些需要回收(对应就是 如何判断对象是否存活) 什么时候回收(safepoint 相关 阅读全文
posted @ 2026-04-06 13:20 不会coding的喵酱 阅读(13) 评论(0) 推荐(0)
摘要: 1. OutOfMemoryError异常 除了程序计数器外,运行时数据区都可能发生oomError异常 以下是对于运行时内存各个区域OOM异常的排查逻辑。 1.1 Java堆溢出 首先要排查的是发生了内存泄露还是内存溢出。 通过dump堆转储快照进行分析。 内存泄露:需要被回收的内存因为某些引用关 阅读全文
posted @ 2026-04-06 12:39 不会coding的喵酱 阅读(32) 评论(0) 推荐(0)
摘要: 1. 对象创建/内存布局/访问方式 1.1 对象的创建 检查是否执行类加载流程 首先当jvm执行到new指令时候,会根据参数定位常量池中的类的符号引用,通过这个符号引用,判断对应的类是否有经历加载,连接,初始化的流程,如果没有,则先执行类加载过程。 当类加载通过后,就是为新的对象分配内存,两种分配内 阅读全文
posted @ 2026-04-06 12:34 不会coding的喵酱 阅读(5) 评论(0) 推荐(0)
摘要: 1. 运行时数据区域 虚拟机栈 本地方法栈 方法区 堆 程序计数器 其中,虚拟机栈,程序计数器,本地方法栈是线程私有的。方法区,堆是被所有线程共享的。 1.1 程序计数器 程序技术器是线程私有的,指向当前执行的字节码指令地址,字节码解释器通过改变程序计数器的值来实现分支,循环,跳转。也是运行时数据区 阅读全文
posted @ 2026-04-06 12:28 不会coding的喵酱 阅读(8) 评论(0) 推荐(0)