
Java
文章平均质量分 93
小梁不秃捏
读进化论,我赞成达尔文
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一文读懂JVM内存区域(大白话版)
JVM内存分为线程私有和线程共享两大块,每个区域各司其职,就像公司里的不同部分的分工合作。原创 2025-03-20 22:44:07 · 1253 阅读 · 0 评论 -
大白话读懂java对象创建的过程
在 JVM 中对象的创建,我们从⼀个 new 指令开始:⾸先检查这个指令的参数是否能在常量池中定位到⼀个类的符号引用检查这个符号引⽤代表的类是否已被加载、解析和初始化过。如果没有,就先执⾏相应的类加载过程类加载检查通过后,接下来虚拟机将为新⽣对象分配内存。内存分配完成之后,虚拟机将分配到的内存空间(但不包括对象头)都初始化为零值。接下来设置对象头,请求头⾥包含了对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。原创 2025-03-20 20:50:27 · 497 阅读 · 0 评论 -
Java 代理模式:从静态代理到动态代理
闺蜜在这里就可以看作是新娘的代理对象,代理的行为(方法)是接收和回复新郎的提问。这样做的好处是,我们可以在不修改原目标对象的前提下,扩展目标对象的功能。代理模式不仅可以扩展目标对象的功能,而且在不修改原目标对象的情况下,可以增加一些我们自定义的操作。CGLIB 动态代理通过继承目标类来生成代理类,因此它可以代理未实现任何接口的类。:动态代理更加灵活,不需要针对每个目标类都创建一个代理类,且可以直接代理实现类。我们需要手动为每个目标类创建一个代理类,并在代理类中调用目标类的方法。在 JDK 动态代理中,原创 2025-03-14 20:27:29 · 1081 阅读 · 0 评论 -
深入浅出Java虚拟机(JVM)核心原理
比如,它会自动帮我们分配内存来存储程序运行时产生的数据,当这些数据不再使用时,JVM 还会自动把它们占用的内存回收掉,这样就不用担心内存不够用或者内存泄漏的问题。(3)虚拟机主要的 5 大块:方法区,堆都为线程共享区域,有线程安全问题,栈和本地方法栈和计数器都是独享区域,不存在线程安全问题,而 JVM 的调优主要就是围绕堆,栈两大块进行。JVM 就负责运行这些字节码文件,它会把字节码翻译成计算机硬件能懂的指令,让程序在不同的操作系统上都能顺利运行。的缩写,简单来说,JVM 就像是一台。原创 2025-02-20 14:34:14 · 2674 阅读 · 0 评论 -
JVM 类加载器深度解析(含实战案例)
是类加载器的协作规则:原创 2025-02-19 18:30:07 · 1233 阅读 · 0 评论 -
JVM类加载过程详解:从字节码到内存的蜕变之旅
类加载过程就像一座精密的工厂流水线,将原材料(字节码)加工成可运行的类对象。加载的类可能被卸载。:加载工作由类加载器完成,采用双亲委派机制确保安全。5. 初始化(Initialization):真正的诞生时刻。3. 准备(Preparation):内存分配的预演。将其转化为JVM内存中的数据结构,才能被程序调用。码字不易,希望可以一键三连,我们下期文章再见!1. 加载(Loading):字节码的搬运工。:由系统类加载器加载的类几乎不会被卸载,而。时,最终由启动类加载器完成。一、类加载的意义与整体流程。原创 2025-02-19 15:59:59 · 1556 阅读 · 0 评论 -
JVM类文件结构深度解析:跨平台基石与字节码探秘
类文件是Java生态的通用中间表示,其精巧设计体现了计算机科学中抽象与实现的完美平衡。掌握这一结构,是我们开发者通向高级Java开发的必经之路!原创 2025-02-19 14:45:52 · 1058 阅读 · 0 评论 -
JVM中的线程池详解:原理→实践
本文详细讲解了JVM中的线程池原理与实践,包括线程池的必要性、与JVM内存模型的关系、核心实现、监控与调优、常见问题排查以及线程池的生命周期管理。文章指出,合理配置和使用线程池是保障系统稳定性的关键,开发者应根据业务场景选择合适的线程池配置,实施全面监控,定期进行压力测试,并及时清理线程资源原创 2025-02-17 21:19:49 · 1716 阅读 · 4 评论 -
Java内存模型(JMM)深度解析:从并发问题到解决方案
本文围绕 Java 内存模型(JMM)展开,深入探讨了其相关概念、原理及在并发编程中的应用,具体内容摘要如下:JMM 产生背景:多核 CPU 时代,并发编程可提升性能,但带来可见性、原子性和有序性三大问题。根源在于 CPU 缓存机制及指令重排序,为解决这些问题引入 JMM。JMM 架构设计内存抽象模型:定义主内存和工作内存,线程间通信需先将本地内存修改同步到主内存,再从主内存读取。不过多线程操作共享变量可能引发线程安全问题。内存交互协议:通过 lock、unlock、read 等 8 种原子操作保证原创 2025-02-17 20:38:50 · 1236 阅读 · 0 评论 -
一文读懂乐观锁与悲观锁:如何在高并发场景下保护你的数据?
悲观锁假设。原创 2025-02-14 21:32:54 · 817 阅读 · 0 评论 -
Java语法糖详解
语法糖(Syntactic Sugar),也称语法糖衣。是指在编程语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用,能够让程序更加简洁,有更高的可读性,同时也更容易编写程序。我们所熟知的编程语言中几乎都有语法糖。比如python中的列表推导式、JavaScript 中的箭头函数、Go 语言中的多返回值、Java 中的 Lambda 表达式等等。比较有意思的是,在编程领域,除了语法糖,还有语法盐和语法糖精的说法。这里不展开叙述,读者可以自行查阅资料了解。2 语法糖处理流程解析。原创 2025-02-06 20:50:23 · 1563 阅读 · 0 评论 -
Java开发者必备知识之shell编程
Shell是一种具备特殊功能的程序,是使用者和kernel间的一个接口Shell脚本是纯文本文件Shell脚本通常以.sh作为后缀名,但不是必须Shell脚本是以行为单位的,在执行脚本的时候 会分解成一行一行依次执行Shell是一种功能强大的解释型编程语言通常用于完成特定的、较复杂的系统管理任务Shell脚本语言非常擅长处理文本类型的数简单来说“Shell 编程就是对一堆 Linux 命令的逻辑化处理”。原创 2025-02-04 17:49:39 · 1079 阅读 · 0 评论 -
Java程序员必备的Linux核心概念与实战命令指南
Linux通过虚拟内存为每个进程提供独立的连续地址空间(32位系统4GB,64位系统理论16EB),实际物理内存通过MMU(内存管理单元)动态映射。对我们Java开发者而言,理解Linux内存管理机制是优化JVM性能、排查OOM(内存溢出)问题的关键基础。当物理内存不足时,内核将不活跃的内存页(Inactive Pages)写入Swap分区/文件,腾出空间给活跃进程。:Swap中的JVM堆内存访问会引发磁盘I/O,导致Stop-The-World时间激增。:实时进程和系统信息(重点关注PID目录)原创 2025-02-04 15:54:09 · 898 阅读 · 0 评论 -
为什么Java中只有值传递?
要弄清这个问题,先得了解两个概念:形参&实参值传递&引用传递。原创 2025-01-31 21:20:01 · 1120 阅读 · 0 评论