为什么JVM报告的内存比linux进程驻留集大小多?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (149)

我可以看到JVM在不同的类别中使用了多少内存。

我在jdk 1.8.0_45上的应用程序显示:

本机内存跟踪:

总计:保留= 4023326KB,承诺= 2762382KB
-  Java堆(保留= 1331200KB,承诺= 1331200KB)
                            (mmap:reserved = 1331200KB,承诺= 1331200KB) 

- 类(保留= 1108143KB,承诺= 64559KB)
                            (课#8621)
                            (malloc = 6319KB#17371) 
                            (mmap:reserved = 1101824KB,承诺= 58240KB) 

- 线程(保留= 1190668KB,承诺= 1190668KB)
                            (线程#1154)
                            (stack:reserved = 1185284KB,承诺= 1185284KB)
                            (malloc = 3809KB#5771) 
                            (竞技场= 1575KB#2306)

- 代码(保留= 255744KB,承诺= 38384KB)
                            (malloc = 6144KB#8858) 
                            (mmap:reserved = 249600KB,承诺= 32240KB) 

-  GC(保留= 54995KB,承诺= 54995KB)
                            (malloc = 5775KB#217) 
                            (mmap:reserved = 49220KB,承诺= 49220KB) 

- 编译器(保留= 267KB,承诺= 267KB)
                            (malloc = 137KB#333) 
                            (舞台= 131KB#3)

- 内部(保留= 65106KB,承诺= 65106KB)
                            (malloc = 65074KB#29652) 
                            (mmap:保留= 32KB,提交= 32KB) 

- 符号(保留= 13622KB,承诺= 13622KB)
                            (malloc = 12016KB#128199) 
                            (竞技场= 1606KB#1)

- 本机内存跟踪(保留= 3361KB,承诺= 3361KB)
                            (malloc = 287KB#3994) 
                            (跟踪开销= 3075KB)

-  Arena Chunk(保留= 220KB,承诺= 220KB)
                            (malloc的= 220KB) 

运行ps ax -o pid,rss | grep <mypid>top仅显示1.6GB的RES/rss常驻内存。检查交换表示没有使用:

免费-m
             缓存总共使用的空闲共享缓冲区
Mem:129180 99348 29831 0 2689 73024
-  / + buffers / cache:23633 105546
交换:15624 0 15624

为什么JVM表示只有1.6GB驻留时提交2.7GB内存?

提问于
用户回答回答于

你注意下这些概念的细节就行:

使用堆:根据最后一个GC,活动对象占用的内存量

已提交:已使用PROT_NONE以外的地址映射的地址范围。由于懒惰的分配和分页,它们可能会或可能不会被物理或交换支持。

保留:通过mmap特定内存池预先映射的总地址范围。 该预留-致力于差由PROT_NONE映射,这是保证不被物理存储器被备份

居民:目前在物理内存中的页面。这意味着代码,堆栈,已提交内存池的一部分,也包含最近被访问的部分mmaped文件以及JVM控制之外的分配。

虚拟:所有虚拟地址映射的总和。涵盖承诺,保留内存池,但也映射文件或共享内存。这个数字很少提供信息,因为JVM可以预先保留非常大的地址范围或mmap大文件。

热门问答

怎么关闭域名隐私保护?

推荐
根据 ICANN 《通用顶级域名注册数据临时政策细则(Temporary Specification for gTLD Registration Data)》和欧盟《通用数据保护条例》合规要求,腾讯云域名信息(WHOIS)查询结果中将不再展示域名所有者、所有者联系邮箱等信息。鉴于...... 展开详请

设置了云函数环境变量TZ 为 asia/shanghai,云函数端仍是0时区日期,为何不生效?

Mason-Serverless

腾讯 · 产品经理 (已认证)

推荐
设置 TZ=Asia/Shanghai 可以获取到北京时间 image.png image.png image.png ... 展开详请

php发送smtp邮件失败,请帮忙看是腾讯云不支持端口25么?

SQL GM热爱数据库的小工匠
推荐
腾讯云默认限制 TCP:25 端口,支持解封,但是有注意事项: 仅支持解封预付费包年包月的云服务器,暂不支持按量付费的云服务器。 每个腾讯云账号仅可解封5个实例。 请确保 TCP 25端口仅用于连接第三方 SMTP 服务器,并从第三方 SMTP 服务器外发邮件。如发现您直接通过云...... 展开详请

安卓APP使用免费版加固后,在Android11系统上运行闪退,是什么原因?

hello,目前已经适配了Android R Beta1,预计这周内上线移动应用安全在线版,请留意日志更新

serverless db 如何管理?

Richel码农
推荐
1.支持pg_dump,psql工具进行数据导入和导出。 2.本地CLI,可以使用postgresql的客户端psql,也可以使用dbeavr,navicate,pgadmin等工具访问。 3.支持操作DB ,要自己写逻辑 ... 展开详请

配置 https 配置完后报错?

女淘日记

杭州吱吱吱科技 · 站长 (已认证)

推荐已采纳

请检查服务器是否安装了代理?如有请尝试移除代理再尝试

另外,curl访问https时候需要确保服务器已经保存了证书,可以通过 curl -k --tlsv1 过滤

所属标签

扫码关注云+社区

领取腾讯云代金券