惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
P
Proofpoint News Feed
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
A
About on SuperTechFans
T
Tenable Blog
M
MIT News - Artificial intelligence
IT之家
IT之家
I
Intezer
D
DataBreaches.Net
爱范儿
爱范儿
T
Threatpost
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AWS News Blog
AWS News Blog
博客园 - 聂微东
C
Check Point Blog
S
Securelist
有赞技术团队
有赞技术团队
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
D
Docker
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
L
Lohrmann on Cybersecurity
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog

博客园 - silyvin

微服务的同步异步(二)一个线程多个请求与一个连接多个请求(http2),客户端的多路复用 吞吐量、线程数、队列(好像没什么用) 去中心化的jwt(二)HS256、RS256、分级 什么叫无状态 如何定义强一致和MVCC 三方支付为什么不用双向ssl,与U盾 事务消息与本地消息表的联系 再谈线程池或连接池容量怎么定 【删除】微信支付的收单机构 【删除】TLS前向保密 缓存一致性的根本原因 ssl pinning clienthello会不会拆粘包,为什么每次wireshark看到的都是正好的 转账tcc 安全采集jvm https代理服务器(八)安卓7 https代理服务器(七)假如被CA出卖 spi 微服务的同步异步 为什么tcp要用mss oauth为什么要传输secret https代理服务器(六)再次java动态签发【成功】 https代理服务器(五)换电脑 多线程插入也是随机io,那为啥不用uuid【yetdone】 http长连接维护 【yet】
直接进老年代的大对象指的是shallow还是retained
silyvin · 2026-04-25 · via 博客园 - silyvin

在JVM(尤其是HotSpot VM)的“大对象直接进入老年代”策略中,“大对象”指的是对象的 shallowsize(浅堆大小),而不是 retained size

  • 大对象阈值判断依据:JVM参数 -XX:PretenureSizeThreshold 设置的就是对象的浅堆大小阈值(在G1、ZGC等现代垃圾收集器中,PretenureSizeThreshold(大对象阈值)通常不起完全相同的作用)。当对象在Eden区分配时,如果它的浅堆大小大于这个阈值,就直接在老年代分配。

  • 原因:判断是否“大”的依据是对象本身占用的连续内存空间大小。这个大小就是浅堆大小——即对象头(mark word、klass pointer)加实例数据(instance data)占用的字节数。

为什么不看 Retained Size?

  • Retained size 是指对象被GC回收时,能一起被释放的整个对象图的堆内存总量(包括它引用的其他对象)。这个大小在分配时通常无法事先准确计算,可能导致循环引用、共享子对象等复杂情况。

  • JVM分配对象是线性快速过程,只能基于当前对象自身大小(浅堆大小)决定放入哪个区域,不可能去做可达性分析或图遍历来计算保留集。

  • 阈值判断的简洁性与确定性:浅堆大小是对象头部就能确定的信息(类元数据、数组长度等),计算成本极低。