自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 【从零学习JVM|第八篇】深入探寻堆内存

Java堆回收机制通过自动清理无效对象来管理内存,核心算法包括引用计数法和可达性分析法。引用计数法实时性强但存在循环引用问题,可达性分析通过GC Roots对象(如虚拟机栈引用、静态变量等)判断对象是否存活。Java提供五种引用类型:强引用(不会被回收)、软引用(内存不足时回收)、弱引用(GC运行时回收)、虚引用(仅用于回收通知)和终结器引用(finalize方法调用)。开发者应合理使用引用类型优化内存管理,避免内存泄漏。堆内存参数(-Xms/-Xmx)的设置直接影响程序性能,理解回收机制有助于提升应用稳定

2025-06-12 21:06:12 753

原创 【从零学习JVM|第七篇】快速了解直接内存

Java直接内存是JVM堆外的操作系统内存区域,通过ByteBuffer操作,核心优势是零拷贝和减轻GC压力。它避免了I/O操作时的数据复制,提升大文件传输性能,并减少堆内存占用。但需手动管理释放,否则易内存泄漏,且分配成本较高。使用时需设置内存上限(MaxDirectMemorySize),评估场景合理使用。直接内存适合高性能I/O和大内存管理,但需谨慎管理生命周期。

2025-06-12 16:13:14 669

原创 【从零开始学习JVM | 第六篇】运行时数据区

JVM运行时数据区是Java程序执行的核心内存管理结构,主要包括堆、方法区、虚拟机栈、本地方法栈和程序计数器五大区域。堆是最大且线程共享的区域,用于存储对象实例,由垃圾回收器管理;方法区存储类元数据、常量等共享信息,在JDK8后改为元空间实现;虚拟机栈和本地方法栈均为线程私有,分别处理Java方法和本地方法调用;程序计数器记录线程执行位置。这些区域协同工作,通过不同的内存分配策略支持Java程序运行,其中堆和方法区需特别注意内存溢出问题。理解这些区域的特性对于Java性能调优和内存管理具有重要意义。

2025-06-11 20:28:15 828

原创 【从零学习JVM|第五篇】打破双亲委派机制

文章摘要:双亲委派机制虽能避免重复加载类并保护核心类库安全,但在实际开发中常需打破以满足业务需求。打破该机制主要为了:1)实现模块化系统中不同版本类库共存;2)解决多应用环境下的类冲突;3)支持动态加载/卸载和热部署;4)满足特殊业务需求。实现方法包括:自定义类加载器重写loadClass方法、使用线程上下文类加载器(如JDBC的SPI机制)以及OSGi框架的"本地优先"加载策略。这些方式突破了传统类加载限制,实现了更灵活的类管理,但需权衡安全性与灵活性。

2025-06-10 20:04:08 829

原创 【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

双亲委派机制是Java类加载的核心机制,采用层级委托方式实现类加载。主要包含启动类加载器(Bootstrap)、扩展类加载器(Extension)和应用类加载器(Application)三级结构。其工作流程是:子加载器先委托父加载器尝试加载,只有当父加载器无法完成时才自行加载。这种机制保证了类的唯一性,防止核心API被篡改,同时实现类的隔离。源码中通过loadClass()方法实现逐层委托,findClass()完成具体查找。该机制是Java安全模型的基础,既能避免类重复加载,又能确保核心类库安全。

2025-06-09 21:21:09 1091

原创 【从零学习JVM|第三篇】类的生命周期(高频面试题)

Java类的生命周期包括:加载(将字节码加载到内存,生成Class对象)、连接(验证字节码、准备静态变量内存并赋默认值、解析符号引用)、初始化(执行静态代码块和赋值)、使用(创建实例、调用方法)、卸载(类不再使用时被回收)

2025-06-09 19:40:16 1623

原创 【从零学习JVM|第二篇】字节码文件

摘要:本文介绍了Java字节码文件(.class)的结构与组成。主要内容包括:字节码文件的基本组成(魔数、版本号、常量池等8个部分);各部分的具体作用与存储方式;字节码指令的执行示例(如i++与++i的区别);以及使用jclasslib工具查看字节码的方法。通过分析字节码底层实现,帮助开发者更深入理解JVM工作原理和代码执行机制。文章最后强调了学习字节码对掌握Java底层逻辑的重要性。

2025-06-04 19:19:11 841

原创 【从零学习JVM|第一篇】初识jvm

Java虚拟机(JVM)是现代软件开发的核心组件,Java虚拟机这块的知识很重要,不仅仅是体现在面试当中,更是体现在技术上,如果你想成为一个技术大牛,那这块的知识必须好好理解

2025-06-03 19:14:04 1314

原创 【从零学习Rabbitmq第三篇】消费可靠性和延迟消息和业务米

让你了解什么叫消费者可靠性并如何保障,了解业务幂等性和延迟消息

2025-05-29 21:03:47 945

原创 【从零学习Rabbitmq第二篇】确保生产者和mq的消息可靠性

如何确保我们的生产者可靠性和mq可靠性

2025-05-28 20:45:09 882

原创 【从零学习Rabbitmq第一篇基础篇】初识Rabbitmq

简单了解Rabbitmq本篇文章等待你的阅读,来吧小伙子

2025-05-27 21:00:15 423

原创 【java基础重要内容|第一篇】HashMap源码解析

从源码上了解hashmap的底层原理

2025-05-22 22:37:58 898

原创 苍穹外卖—万字总结

  苍穹外卖写完了,作为我的第一个项目,可谓是收获满满。不管是知识上的收获,还是思维上的收获,都是非常多的,所以我现在回头来好好看看这个项目,总结一下我的这个项目。

2025-04-15 14:18:32 1103

原创 苍穹外卖第九和第十天

昨天写了一整天的接口,今天完成了一点功能,还是有收获的。

2025-04-06 22:02:46 899

原创 苍穹外卖第七天和第八天

今天放假了,上午有点摆,一直玩,然后下午两点才开始学,昨天的项目日记今天一起补上。

2025-04-04 20:06:14 953

原创 苍穹外卖第六天

今天下午没课,然后课上补了一些之前javaweb没听懂的知识,今天学下来的感受就是有些听不懂有一点懵。

2025-04-01 19:58:59 619

原创 苍穹外卖项目第五天

今天课不多,然后下午体育课直接润,待在寝室写代码,这一周的课都不多,所以这一周加上清明节,就准备完成苍穹外卖这个项目。

2025-03-31 18:56:45 1380

原创 苍穹外卖第四天

今天全是课,完全没时间,接口还是在一些机房课上拿自己电脑偷偷写的。

2025-03-27 22:05:46 288

原创 今天是苍穹外卖项目第三天

这一周的课都很多,单周课多,下周双周的话可以多写一点代码,今天写的不多但是收获蛮多的。

2025-03-26 21:23:44 356

原创 学习苍穹外卖第二天

今天下午五点下课回来开始学项目,学了三个半小时,然后发现状态不行了,就明天在学吧。

2025-03-25 21:34:39 185

原创 苍穹外卖项目第一天

这是我的第一篇博客,也是我第一个项目的开始,写这个的原因就是第一个记录一下来鞭策一下我自己,第二个也是回顾一下今天的学习。

2025-03-24 20:23:10 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除