weixin_42421859 2011-03-08 04:32
浏览 1705
已采纳

请问用jmap -heap查到的大小与top查java进程占用的res内存为什么不相同?

同样的一个java进程,用top查询:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

5466 root 15 0 2369m 106m 10m S 0.0 1.3 0:08.02 java

占用的内存RES是106m,
而用jmap -heap查到是这样:
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 2074083328 (1978.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 85983232 (82.0MB)

Heap Usage:
PS Young Generation
Eden Space:
capacity = 17760256 (16.9375MB)
used = 9450928 (9.013107299804688MB)
free = 8309328 (7.9243927001953125MB)
53.21391763722325% used
From Space:
capacity = 5046272 (4.8125MB)
used = 131072 (0.125MB)
free = 4915200 (4.6875MB)
2.5974025974025974% used
To Space:
capacity = 5373952 (5.125MB)
used = 0 (0.0MB)
free = 5373952 (5.125MB)
0.0% used
PS Old Generation
capacity = 86441984 (82.4375MB)
used = 34584152 (32.982017517089844MB)
free = 51857832 (49.455482482910156MB)
40.00851253020755% used
PS Perm Generation
capacity = 21757952 (20.75MB)
used = 9505648 (9.065292358398438MB)
free = 12252304 (11.684707641601562MB)
43.688155944088855% used
使用的加起来51m左右
请问应该怎样查一个java进程所占用的内存?

看了一些国外的文章,说java heap查的只有堆内存和 Perm 内存的大小,JVM 中还有栈内存,JNI等,每个线程还得占据一定的内存,有没有什么命令可以查询这些内存呢?

展开全部

  • 写回答

4条回答 默认 最新

  • 王启军 2011-03-08 08:29
    关注

    top查的是占用的所有内存,垃圾回收也需要占内存。
    想查那些可以用jprofile

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥30 silcavo仿真,30分钟,只需要代码
  • ¥15 FastReport 怎么实现打印后马上关闭打印预览窗口
  • ¥15 利用3支股票数据估计其均值和方差的95%置信区间。
  • ¥15 微信小程序运行一项功能时,弹出未知错误弹框,检查代码没有问题
  • ¥15 ATAC测序生成self-pseudo replicates之前是否要进行去线粒体reads
  • ¥15 python模糊字匹配函数问题
  • ¥20 谁刷目标页面的uv记录器上数据,数据只记录跳转的数值
  • ¥30 数据库软件的安装方法
  • ¥15 一道以太网数据传输题
  • ¥15 python 下载群辉文件
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部