avatar
*求购 P&G $25+收据一张# PennySaver - 省钱一族
n*u
1
【 以下文字转载自 Linux 讨论区 】
发信人: notwamu (wamu), 信区: Linux
标 题: 怎么看process 用多少内存?
发信站: BBS 未名空间站 (Mon Jul 15 16:42:51 2013, 美东)
比如 C++ 中先 new 几个G内存再delete掉, ps, top 都不显示还给操作系统的那几个G
.
有没有现成的工具看这个?
avatar
m*y
2
不建议交易打印胖子;胖子是免费的,收费的是服务:
P&G $25+收据一张
所求物品名称:
P&G $25+收据一张
物品类别(coupon: mfc 等;血糖仪等):
收据
物品来源(报纸夹页,厂家邮寄等):
CVS 或其他店(能做REBATE都可以)
可接受的价格(必须明码标价,必填):
0.1 +0.50 postage
邮寄损失方式哪方承担(若需邮寄,必填):
together
付款方式说明:
paypal
本贴有效期(必填):
till get.
联系方式(例: 站内):
mitbbs
avatar
g*e
3
delete掉了top里应该会更新吧?
avatar
P*K
4
0.1?

【在 m*******y 的大作中提到】
: 不建议交易打印胖子;胖子是免费的,收费的是服务:
: P&G $25+收据一张
: 所求物品名称:
: P&G $25+收据一张
: 物品类别(coupon: mfc 等;血糖仪等):
: 收据
: 物品来源(报纸夹页,厂家邮寄等):
: CVS 或其他店(能做REBATE都可以)
: 可接受的价格(必须明码标价,必填):
: 0.1 +0.50 postage

avatar
r*h
5
记得yelp问我Linux下用哪个命令看现在用了多少内存,我说我忘了。。。

个G

【在 n*****u 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: notwamu (wamu), 信区: Linux
: 标 题: 怎么看process 用多少内存?
: 发信站: BBS 未名空间站 (Mon Jul 15 16:42:51 2013, 美东)
: 比如 C++ 中先 new 几个G内存再delete掉, ps, top 都不显示还给操作系统的那几个G
: .
: 有没有现成的工具看这个?

avatar
l*z
6

co ?

【在 P*K 的大作中提到】
: 0.1?
avatar
t*t
7
C++ library自己管理内存,跟process内存无关吧。我看只能通过某些系统调用得之。
avatar
c*r
8
tri ?

【在 l****z 的大作中提到】
:
: co ?

avatar
n*u
9
不更新, 至少红帽5是.

【在 g*********e 的大作中提到】
: delete掉了top里应该会更新吧?
avatar
t*t
10
一般来说,C++ new, delete都是从这个process已经有的内存中分配,释放。只有
process内存不够才会去向OS申请多的内存。
比如,一个process起来,OS先给它1G内存,然后程序里的new, delete都在这1G里面
操作。所以通过new delete完全无法得知OS给了process多少内存。

【在 n*****u 的大作中提到】
: 不更新, 至少红帽5是.
avatar
n*u
11
new 还是可以通过top 看出大概的, 特别是上GB之后.可是 delete 很繁根本看不出来.

【在 t***t 的大作中提到】
: 一般来说,C++ new, delete都是从这个process已经有的内存中分配,释放。只有
: process内存不够才会去向OS申请多的内存。
: 比如,一个process起来,OS先给它1G内存,然后程序里的new, delete都在这1G里面
: 操作。所以通过new delete完全无法得知OS给了process多少内存。

avatar
s*r
12
pmap -x
avatar
n*u
13
这个也不行, 大概也是基于 /proc 的.

【在 s********r 的大作中提到】
: pmap -x
avatar
s*r
14
这个我是刚试过的
malloc() / free() 1G准确无误
Ubuntu 10.4
gcc 4.4.3
uname -r
2.6.32-38-generic

【在 n*****u 的大作中提到】
: 这个也不行, 大概也是基于 /proc 的.
avatar
n*u
15
看来跟 kernel 有关, 我的是 Rhat 5, 2.6.18.
new/delete 改成 malloc/free 还是不行

【在 s********r 的大作中提到】
: 这个我是刚试过的
: malloc() / free() 1G准确无误
: Ubuntu 10.4
: gcc 4.4.3
: uname -r
: 2.6.32-38-generic

avatar
s*r
16
Red Hat 5 Enterprise? 这种企业级 commercial 的产品有这种问题未免太搞笑。
不过有可能有修改过的内存管理模块, lazy deallocation?
建议你这样试试,
char *mem = (char*) malloc(sizeof(char)*(1<<30));
getchar();
free(mem);
getchar();
起同样的进程,第一个进程在 free() 后的getchar()停住,
然后起足够多个同样的进程,在 malloc() 后的getchar() 停住,看会不会把第一个的
进程free() 掉的空间给拿回来。

【在 n*****u 的大作中提到】
: 看来跟 kernel 有关, 我的是 Rhat 5, 2.6.18.
: new/delete 改成 malloc/free 还是不行

avatar
n*u
17
应该只是显示的问题, 不可能没有释放. Linux 认为释放的内存还是 Used:
http://www.linuxatemyram.com/
But what do you call memory that is both used for something and available
for applications?
You would call that "free", but Linux calls it "used".

【在 s********r 的大作中提到】
: Red Hat 5 Enterprise? 这种企业级 commercial 的产品有这种问题未免太搞笑。
: 不过有可能有修改过的内存管理模块, lazy deallocation?
: 建议你这样试试,
: char *mem = (char*) malloc(sizeof(char)*(1<<30));
: getchar();
: free(mem);
: getchar();
: 起同样的进程,第一个进程在 free() 后的getchar()停住,
: 然后起足够多个同样的进程,在 malloc() 后的getchar() 停住,看会不会把第一个的
: 进程free() 掉的空间给拿回来。

avatar
s*r
18
这个网页说的和讨论进程所占内存是否 free 的问题,并没有关系 。
Linux 进程内核态数据结构 task_struct 中的 struct mm_struct *mm 负责与进程所
使用的内存挂钩。
mm_struct 中的 vm_area_struct 既组成一个 link list,又是个avl tree, 便于高效
内存管理。
btw, 这个网站:
http://www.linuxatemyram.com/
linuxatemyram.com 谁想出来的,是微软的人干的吗?哈哈哈哈

【在 n*****u 的大作中提到】
: 应该只是显示的问题, 不可能没有释放. Linux 认为释放的内存还是 Used:
: http://www.linuxatemyram.com/
: But what do you call memory that is both used for something and available
: for applications?
: You would call that "free", but Linux calls it "used".

avatar
n*u
19
你再试下每次开 malloc 3KB, 再循环 1000,1000次.
一次开一个巨型数组, 然后delete, 我这边也没问题.
大概整个页还给系统的话, 就容易被识别.
内个网站很多stackoverflow 的贴子都引用, 是挺搞的.

【在 s********r 的大作中提到】
: 这个网页说的和讨论进程所占内存是否 free 的问题,并没有关系 。
: Linux 进程内核态数据结构 task_struct 中的 struct mm_struct *mm 负责与进程所
: 使用的内存挂钩。
: mm_struct 中的 vm_area_struct 既组成一个 link list,又是个avl tree, 便于高效
: 内存管理。
: btw, 这个网站:
: http://www.linuxatemyram.com/
: linuxatemyram.com 谁想出来的,是微软的人干的吗?哈哈哈哈

avatar
s*n
20
这个我记得是看用掉的内存先。linux好久不用命令都忘掉了。
然后去哪里看多少是缓存的,那么两者差就是真正使用的内存。

个G

【在 n*****u 的大作中提到】
: 你再试下每次开 malloc 3KB, 再循环 1000,1000次.
: 一次开一个巨型数组, 然后delete, 我这边也没问题.
: 大概整个页还给系统的话, 就容易被识别.
: 内个网站很多stackoverflow 的贴子都引用, 是挺搞的.

avatar
s*r
21
我这边用 ubuntu 一直没有 free() 不能体现的问题。
RHE5 很可能是修改过的内核代码,接口不变,动过 mm_struct 的 management。
这样对于服务器是有好处的,可以减少内存碎片。

【在 n*****u 的大作中提到】
: 你再试下每次开 malloc 3KB, 再循环 1000,1000次.
: 一次开一个巨型数组, 然后delete, 我这边也没问题.
: 大概整个页还给系统的话, 就容易被识别.
: 内个网站很多stackoverflow 的贴子都引用, 是挺搞的.

avatar
n*u
22
有空我也读一读 mm_struct...就是这种东西没市场需求,真心没动力.

【在 s********r 的大作中提到】
: 我这边用 ubuntu 一直没有 free() 不能体现的问题。
: RHE5 很可能是修改过的内核代码,接口不变,动过 mm_struct 的 management。
: 这样对于服务器是有好处的,可以减少内存碎片。

avatar
s*r
23
是的,技术再高最多是个武状元,
如果不打仗,就没有用处了,待遇最多和普通工地搬砖,挑石头,lumberjack 等打个
平手

【在 n*****u 的大作中提到】
: 有空我也读一读 mm_struct...就是这种东西没市场需求,真心没动力.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。