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

推荐订阅源

Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
N
News and Events Feed by Topic
GbyAI
GbyAI
I
InfoQ
P
Privacy & Cybersecurity Law Blog
AWS News Blog
AWS News Blog
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
Recent Announcements
Recent Announcements
D
Darknet – Hacking Tools, Hacker News & Cyber Security
D
Docker
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Scott Helme
Scott Helme
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News and Events Feed by Topic
C
CXSECURITY Database RSS Feed - CXSecurity.com
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
W
WeLiveSecurity
S
Securelist
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
www.infosecurity-magazine.com
www.infosecurity-magazine.com
K
Kaspersky official blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Schneier on Security
Schneier on Security
Stack Overflow Blog
Stack Overflow Blog
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Vercel News
Vercel News
C
Cyber Attacks, Cyber Crime and Cyber Security
Y
Y Combinator Blog
T
Tor Project blog
G
GRAHAM CLULEY
T
Tailwind CSS Blog
博客园 - Franky
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
V2EX - 技术
V2EX - 技术
H
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
F
Full Disclosure

崔八由

内网设备被挖矿了 对华宸未来债券基金更名的总结 凸(艹皿艹 ) 推特被封了 第一次装机过程与记录 记录一下今年治牙的过程 预测未来 最终还是投向了obsidian pve lxc容器使用vnpy的问题 扔垃圾的感受 解决macos sierra重新安装时报错-准备安装时发生错误 记录一下使用vercel搭建umami中需要注意的地方 还是不能太依赖自建服务 Android应用在上架Google Play时封闭式测试的一些建议 acme.sh自动生成泛域名证书的几个坑 老了 go学习笔记之指针 pve主机使用smart_ctl监控磁盘信息 tailscale的设置与安装 go中获取某个包下定义的所有变量
JVM中的Shallow Size 和 Retained Size解释
崔八由 · 2024-09-27 · via 崔八由

发表于|更新于|编程java

|浏览量:|

在使用相关的JVM内存工具查看堆栈情况时, 有两个指标Shallow SizeShallow Size不是很清楚其真正含义,现在通过一个例子来了解其含义。

先说一下概念描述:

  • shallow size: 对象自身占用的内存, 不包括它引用的其他实例。例如,对于一个简单的对象,如果它有几个基本数据类型的字段和对其他对象的引用,那么该值只计算这些字段所占的空间,而不计算被引用对象的空间
  • retained size: 当实例A被回收时, 可以同时被回收的实例的Shallow Size之和

示例代码很简答, 构造一个List,然后插入100万个元素, 在程序运行的过程中使用IDEA自带的Profiler来获取堆栈快照,后面的一个无限循环是为了防止程序运行完终止。

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) throws Exception {
List<Integer> l = new ArrayList<>();
for (int i=0; i < 1000000; i++){
l.add(i);
}
while (true){
TimeUnit.SECONDS.sleep(3);
System.out.println("sdsdsds");
}
}

结果如下图所示:

可以看到,List实例的shallow size很小,因为其代表本身这个List对象占用的内存,不包含其引用的100万的Integer对象, 而retained size很大,接近29M。

在此处, 想验证一下long类型和int类型各自占用的空间占用区别有多大。

将Integer改成了Long, 其他不变,观察retained size,接近33M,和int的差距不是很大。


avatar

七只鸟离开了夏天,飞向了秋天