首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么JVM报告的内存比linux进程驻留集大小多?

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

Stack Overflow用户
提问于 2018-03-15 11:08:11
回答 1查看 0关注 0票数 0

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

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

代码语言:javascript
复制
本机内存跟踪:

总计:保留= 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常驻内存。检查交换表示没有使用:

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

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

EN

Stack Overflow用户

发布于 2018-03-15 21:00:54

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

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

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

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

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

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

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档