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

thbcm阅读(70)

Java虚拟机的堆划分

当前,主流的Java虚拟机主要采用分代回收(Generational Garbage Collection)。分代回收,更准确地说,它是一种理念。这种理念将系统中的所有对象划分为不同的代(Generation),并根据对象的生命周期长度将其分类到相应的代中,每个代则采用适合其特性的垃圾回收算法。这种理念主要基于两个分代假设。

1)弱分代假说(Weak Generational Hypothesis):大部分对象都会在创建后不久就变得不可达。也就是说,许多对象的生命周期都很短;

2)强分代假说(Strong Generational Hypothesis):存活时间较长的对象,很可能会引用存活时间较短的对象,但反之则不然。也就是说,老的对象很少引用新的对象。

Java虚拟机将堆划分为新生代(Young Generation)和老年代(Old Generation)。其中,新生代又被划分为Eden区,以及两个大小相同的Survivor区。默认情况下,Java虚拟机采取一种动态分配的策略,根据生成对象的速率,以及Survivor区的使用情况动态调整Eden区和Survivor区的比例。


CSP-S 2025 游记

thbcm阅读(48)

依旧记得两年前的 CSP 2023,早上入门组发挥失常,导致下午的提高组做题时压力陡增,看见 T1 密码锁时匆匆写完代码便开始思考后面的题目,使得原本必得的 100 分 RE 挂成了 50 分,T2 消消乐只会写 50 分暴力分,T3 结构体猛攻两小时无获而归,喜提
\(50+50+0+0=100\) 分,只有二等奖……

NocoBase 2.0:与你的 AI 员工见面

thbcm阅读(56)

NocoBase 1.0-alpha 于 2024 年 4 月 28 日发布,同时我们也正式开启了商业化的服务。在过去这 10 几个月里,我们收到了成百上千的用户的反馈和交流,收到了数十位来自全球各地开发者贡献的代码,也收到了 50 多个国家、数百家企业的商业订单。

VonaJS: 序列化/数据脱敏(下)

thbcm阅读(46)

前文介绍了
序列化的一般用法。这里再介绍一组工具函数。通过工具函数可以更加便利的使用序列化能力

纯HTML + CSS + JS 实现Popup弹窗

thbcm阅读(38)

虽然现在有大量 UI 框架(如 Element UI、Ant Design、Bootstrap)提供现成的弹窗组件,但
理解其底层实现原理,不仅能让你在无框架环境下快速构建功能,还能加深对 DOM 操作、事件处理和 CSS 布局的理解。

联系我们