
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
Java虚拟机垃圾回收算法详解:JVM中常用GC算法包括标记-清除(简单但产生碎片)、复制算法(高效但浪费空间)、标记-整理(无碎片但耗时)和分代收集(年轻代用复制,老年代用标记整理)。现代G1回收器采用分区算法,实现可控停顿。不同算法各有优劣,JVM会根据对象生命周期特点选择最优策略,如年轻代存活率低适合复制算法,老年代则采用标记整理。理解这些算法原理有助于优化Java应用内存管理。

内存泄漏:通俗解析与解决方案 内存泄漏就像储藏室堆满不再使用的物品。在Java中常见于:1)静态集合长期引用对象;2)未关闭文件/数据库资源;3)未注销的监听器;4)内部类隐式持有外部类引用。可通过jvisualvm等工具检测,采用try-with-resources、WeakHashMap、及时清理监听器等方法预防。核心原则是管理对象生命周期,遵循"谁创建谁清理"的黄金法则。

摘要: Java内存泄漏指对象因错误引用无法被GC回收,常见于静态集合、未关闭资源、监听器未注销等场景。解决方案包括使用弱引用集合(如WeakHashMap)、try-with-resources自动关闭资源、显式清理ThreadLocal等。检测工具推荐VisualVM、MAT分析堆转储,JProfiler跟踪引用链。核心原则是避免长生命周期对象持有短生命周期对象的强引用,及时释放物理资源,对缓

摘要:本文以CMS收集器为例,详细解析了Full GC的完整流程。当老年代空间不足时触发GC,分为四个阶段:初始标记(STW暂停标记GC Roots直接引用对象)、并发标记(遍历引用链)、重新标记(STW修正引用变化)和并发清除(回收内存)。CMS采用部分STW+并发操作来平衡性能,但会产生内存碎片,可能退化为Serial Old收集器。该收集器适合重视响应速度的系统,但存在CPU资源争用问题,可

MinorGC和FullGC是Java虚拟机中的两种垃圾回收机制。MinorGC针对年轻代(Eden区和Survivor区),在Eden区满时高频触发,速度快且影响小。FullGC则清理整个堆(包括老年代和方法区),由老年代/方法区满或手动调用触发,速度慢且会暂停所有应用线程。优化目标是通过调整内存配置减少FullGC频率,让MinorGC承担主要回收工作。两者的主要区别体现在作用范围、执行频率和

摘要:Java垃圾收集器是JVM性能的核心组件,不同收集器适用于不同场景。文章通过"城市清洁工"的比喻,详细介绍了6种常用收集器:单线程的Serial适合小应用;Parallel适合计算密集型任务;CMS适用于Web服务;G1是JDK9+默认收集器,平衡吞吐和停顿;ZGC/Shenandoah则适合大内存实时系统。选择原则根据应用规模、吞吐量和延迟需求决定,现代应用推荐G1/Z

MyBatis-Plus 是 MyBatis 的增强工具,通过自动生成 CRUD 方法、链式条件查询、内置分页插件等功能,大幅简化数据库操作。相比原生 MyBatis,它能减少80%代码量,降低学习成本,提升开发效率。核心价值在于让开发者专注业务逻辑而非重复的数据库操作,特别适合中大型项目快速迭代。主要特性包括自动代码生成、乐观锁支持以及可视化条件构造器,是Java持久层开发的效率加速器。

JVM如何判断对象可回收? JVM通过可达性分析算法判断对象存活:从GC Roots(如栈帧变量、静态属性等)出发遍历引用链,未被引用的对象标记为可回收。Java提供4种引用类型(强、软、弱、虚),回收优先级依次递增。对象回收经历两次标记:先检查不可达性,若覆盖finalize()则给予一次自救机会(但不建议依赖)。方法区回收需满足类实例、ClassLoader和Class对象均不可达的条件。核心

MyBatis框架巧妙运用了9种核心设计模式: 建造者模式:通过SqlSessionFactoryBuilder分步构建复杂配置对象 工厂模式:SqlSessionFactory生产不同特性的SqlSession实例 代理模式:MapperProxy为接口生成动态代理实现SQL转换 模板方法:BaseExecutor定义SQL执行的标准流程骨架 装饰器模式:通过Cache继承体系层层增强缓存功能

本文详细对比了MyBatis一级缓存与二级缓存的区别。一级缓存是SqlSession级别的本地缓存,默认开启,生命周期随会话结束而销毁,适合高频短时效查询;二级缓存是Mapper级别的全局缓存,需手动配置,可跨会话共享,适合读多写少的场景。核心区别在于作用域、生命周期和数据共享性。使用时需注意脏读风险和适用场景,二级缓存通常需配合Redis实现分布式扩展。两者分别适用于不同的业务需求,一级缓存提供








