永发信息网

Java程序在linux系统下运行,为什么会占用很多虚拟内存

答案:1  悬赏:80  手机版
解决时间 2021-01-05 00:30
Java程序在linux系统下运行,为什么会占用很多虚拟内存
最佳答案
RSS列 表示, 程序占用了多少物理内存。 虚拟内存可以不用考虑,它并不占用实际物理内存。 (2). top 命令也可以 其中VIRT(或VSS)列 表示,程序占用了多少虚拟内存。 同 ps aux 中的 VSZ列 RES列 表示, 程序占用了多少物理内存。同 ps aux 中的RSS列 2.在linux下, 查看当前系统占用了多少内存, 一般的命令是 free其中, free就是系统还有多少内存可以使用。但由于 linux 系统对内存使用有一个原则, 就是, 内存是宝贵的, 能使用多少就使用多少。 所以, linux会把已经调用过的包缓存起来,放在内存里。这样,实际上,可以使用的内存,就可以理解为, free+buffers+cached3.当你了解完这些命令以后, 再去使用ps aux 命令去查看的时候, 会发现一个奇怪的现象。 所有的 RSS 列的数据,加起来, 比物理内存的数要大很多。 比如, 物理内存为2G, 而RSS列的数据加起来,可能有5个G之多, 这是怎么回事了? 这是因为RSS列的值骗了我们。 linux的内存机制是这样的: 在运行一个程序时, linux会调用该程序依赖的链接库, 如lib.xx.so。 首先看该链接库是否被映射进内存中,如果没有被映射,则将代码段与数据段映射到内存中,否则只是将其加入进程的地址空间。 这样,当N个程序,依赖到lib.xx.so的时候, 实际上,内存中只有一个lib.xx.so ,而不是N个。 而RSS在显示一个程序占用的实际物理内存时, 将lib.xx.so也算了进来。 比如, X程序, 本身占用内存为5M, lib.xx.so 占用内存2M,lib.xx.so被N个程序共享依赖。 则RSS显示为,X程序运行,占用内存为7M。 实际上, X程序占用了5M空间。 多余的2m被讨入到RSS中了。 当你在用ps aux显示内存占用情况时, N个共享依赖lib.xx.so的N个程序,都把这2m空间,算在自己的RSS中了, 这样RSS的sum值,就比实际物理内存多了。 当然, linux的内存使用机制很复杂, 不是一句两句能说清楚的。这里只是简单的说明了一下, ps aux中的RSS值, 并不能真实反映物理内存的使用情况。 4. 如果查看更详细的内存使用情况, 可用以下几种方法, 或者几种方法结合使用:这几种方法,都需要root账户的权限(1). pmap -d $pid $pid 是正在运行的程序的pid(2). cat /proc/$pid/smaps smaps的数据比较详细,可简单的归纳一下,归纳的命令如下: cat /proc/$pid/smaps awk '/SizeRssPssSharedPrivateReferencedSwap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}' (3). cat /proc/$pid/maps(4). cat /proc/$pid/statm输出解释第一列 size:任务虚拟地址空间大小 第二列 Resident:正在使用的物理内存大小 第三列 Shared:共享页数 第四列 Trs:程序所拥有的可执行虚拟内存大小 第五列 Lrs:被映像倒任务的虚拟内存空间的库的大小 第六列 Drs:程序数据段和用户态的栈的大小 第七列 dt:脏页数量(5). vmstat这个命令据说也可以提供一些参考信息,具体还未研究 5.作为phper,尝试过使用php的函数memory_get_usage(), 该函数也不能得到php当前运行的程序,实际的,真正占用的内存数量。 如果真想得到,php真正占用的内存, 大概只能在, 程序运行的开始,执行一次memory_get_usage(). 在程序运行结束,执行一次memory_get_usage()。 将两者的值相减,得到的值, 应该是一个相对比较准确的,内存占用数量了。 这个方法还没有测试, 考虑到, 得到这个数量,也没有实际意义, 加上平时又比较忙,懒得试了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
初一数学总复习题答案。
Five students went out for a one-week trip
与box发音相同的单词
我想上传视频到快手,在网上下载好了的视频为
单选题IamaLeagueMember.Ivolunteermy
梯形的面积是21.6平方厘米,它的高是5.4厘米
在微信里如何快速打包将照片发现给我的朋友
单选题Ted, there’s a boy a
依次填入下列句中横线上的词语,最恰当的一组
一个质点做直线运动,原来v>0,a>0,x>0,
什么叫遥感地学分析?地学分析的方法有哪些?
外地车到上海奉贤区阳王镇限号吗?
万星村委会地址在哪?我要去那里办事
丹录村委会在什么地方啊,我要处理点事
一次函数y=ax+b的图象经过点(3,5),则方程
推荐资讯
单选题在大型庆典结束时,往往有“数万只小气
石榴石,黄水晶哪个好
梦见给去世了的亲人洗袜子。
大吴中学2016年期末考试成绩初一
‘唯利是图’是文言文中的什么特殊句式
冲量的定义
判断题因为42÷7=6,所以42是倍数,7是因数.
计算:(a2+ab+b2)(a2-ab+b2).
单选题大气污染、水污染、土壤污染、生物污染
解方程.①x÷4.8=0.6②7x-3x=5.2③2.4(x-4
妹妹和朋友与我的日常百度云资源
“天府之国”是下列哪个平原A.东北平原B.华北
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?