2025年11月7日

万丈高楼平地起:从“输入-处理-输出”第一性原理,看懂系统架构的演进

摘要: 系统设计的复杂性,往往源于其需要应对的外部压力。对于互联网应用而言,用户规模的增长和流量的瞬时波动,是其必须面对的常态。一个未经深思熟虑的系统,在流量洪峰面前可能会变得迟缓甚至不可用,直接影响用户体验与业务目标。 因此,构建一个能够从容应对压力的系统架构,便成为一项核心的工程命题。 本文将探讨一种行 阅读全文

posted @ 2025-11-07 16:31 poemyang 阅读(211) 评论(0) 推荐(0)

2025年11月6日

内存泄漏 vs. 内存溢出:剖析Java虚拟机两大内存绝症的病因与疗法

摘要: 内存泄漏和内存溢出是Java程序中最常见的两类内存管理问题。它们都与内存息息相关,但本质、成因和解决方法截然不同。 内存泄漏 内存泄漏指的是程序在向系统申请内存后,由于设计缺陷或编码错误,导致某些已经不再被使用的对象仍然被引用链持续持有,从而无法被垃圾回收器识别和回收。这些无用对象会像僵尸一样永久地 阅读全文

posted @ 2025-11-06 21:52 poemyang 阅读(272) 评论(0) 推荐(0)

2025年11月5日

告别漫长GC停顿:深入解析G1如何实现可预测的毫秒级响应

摘要: G1(Garbage-First)垃圾回收器是一款面向服务端应用、为大内存和多处理器系统设计的革命性垃圾回收器。G1的核心设计目标是在满足高吞吐量的同时,建立一个“可预测的停顿时间模型”(Pause-Time Model),让使用者可以明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾回收上的时间大 阅读全文

posted @ 2025-11-05 18:27 poemyang 阅读(233) 评论(0) 推荐(0)

2025年11月4日

吞吐量、延迟、内存:深入理解垃圾回收的“三元悖论”

摘要: 垃圾回收算法的评价标准:吞吐量、延迟、内存,孰轻孰重? 评估和选择垃圾回收器时,不存在一体通用的最优解。不同的应用场景对性能的要求截然不同,因此需要通过一套标准化的指标来衡量垃圾回收算法的特性。通常,关注三个主要的、且相互制约的评价指标:吞吐量(Throughput)、最大暂停时间(Max Paus 阅读全文

posted @ 2025-11-04 17:11 poemyang 阅读(281) 评论(0) 推荐(0)

2025年11月3日

不止新生代与老年代:深入Java虚拟机堆内存布局与TLAB、卡表等优化机制

摘要: Java虚拟机运行数据区域 在JDK 8及以上版本中,Java虚拟机运行时数据区域主要包括以下部分: 1)堆(Heap):这是Java虚拟机中最大的内存区域,所有线程共享,主要用于存放对象实例和数组。这也是垃圾回收的主要区域,因此也被称作GC堆(Garbage Collection Heap)。 2 阅读全文

posted @ 2025-11-03 16:41 poemyang 阅读(121) 评论(0) 推荐(0)

2025年10月30日

为什么我的应用会卡顿?垃圾回收中的STW难题与破解之道

摘要: 垃圾回收算法:清除、压缩、复制 可达性分析提供了一种有效的方式,来标记哪些对象死亡,哪些对象还存活。然而,确定哪些对象死亡可以被回收,只是垃圾回收的第一步, 这个过程通常被称为标记(Mark)。接下来,需要一种方法来回收这些死亡对象占用的内存,以便这些内存可以被重新使用。这就是垃圾回收算法的任务。 阅读全文

posted @ 2025-10-30 12:16 poemyang 阅读(241) 评论(1) 推荐(0)

2025年10月29日

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑

摘要: 引用计数与可达性分析:谁死了,谁还活着? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。在Java虚拟机的语境下,垃圾指的是死亡的对象所占据的堆空间。这里便涉及了一个关键的问题:如何辨别一个对象是存是亡? 引用计数 引用计数(Reference Counti 阅读全文

posted @ 2025-10-29 00:08 poemyang 阅读(143) 评论(0) 推荐(0)

2025年10月27日

压缩指针:64位系统下,Java虚拟机是如何“偷”回4字节内存的?

摘要: Java对象:在内存中的真面目 在Java中,通过new关键字创建一个Java类的实例对象时,该对象会通过碰撞指针方式存储在内存的堆中,并被分配一个内存地址。在Java虚拟机中,一个Java对象由对象头(Object Header)、实例数据(Instance Data)和对齐填充(Padding) 阅读全文

posted @ 2025-10-27 21:02 poemyang 阅读(277) 评论(0) 推荐(0)

2025年10月25日

为什么Java/Python程序无需关心内存释放?揭秘垃圾回收(GC)的核心概念

摘要: 在Java的编程世界里,开发者既无需也无法像C/C++那样手动调用malloc/free来管理内存的分配与回收,这一核心任务完全由Java虚拟机在幕后自动完成。这种自动化设计极大地简化了编码,将开发者从繁琐且极易出错的内存管理中解放出来。然而,这种便利性的背后隐藏着一个经典且复杂的难题:一个动态运行 阅读全文

posted @ 2025-10-25 23:08 poemyang 阅读(267) 评论(0) 推荐(0)

2025年10月23日

jemalloc思想的极致演绎:深度解构Netty内存池的精妙设计与实现

摘要: 内存分配 Netty内存池的核心设计借鉴了jemalloc的设计思想。jemalloc是由Jason Evans在FreeBSD项目中实现的高性能内存分配器,其核心优势在于通过细粒度内存块划分与多层级缓存机制,降低内存碎片率并优化高并发场景下的内存分配吞吐量。 Netty基于jemalloc的多Ar 阅读全文

posted @ 2025-10-23 14:49 poemyang 阅读(174) 评论(0) 推荐(0)

导航