由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c里面有什么函数可以
相关主题
被ptmalloc坑了关于 c malloc的一个问题
有没有这样的memory management library?Memory Usage问题
ask for help about AMD cluster一个关于空间分配的问题
C++中释放的内存可能立即返回系统吗?奇怪的问题:关于一个简单的malloc()小程序 (转载)
有谁对glibc的allocator有研究?问一个跟 memory (process address space) 的有关的问题 (转载)
Android NDK哪个版本的依赖是glibc 2.12?突然发现现在很反感malloc了
vector析构的时候怎么办?Windows下多个DLL之间memory allocation问题
gdb with big core filemalloc per-thread arena
相关话题的讨论汇总
话题: os话题: malloc话题: vsize话题: getrusage话题: stat
进入Programming版参与讨论
1 (共1页)
c*******h
发帖数: 1096
1
查看当前程序用了多少内存?
x****u
发帖数: 44466
2
这是OS的功能,不是编程语言能控制的。

【在 c*******h 的大作中提到】
: 查看当前程序用了多少内存?
D*******a
发帖数: 3688
3
malloc_stat() for linux

【在 c*******h 的大作中提到】
: 查看当前程序用了多少内存?
c*******h
发帖数: 1096
4
试过getrusage,但是malloc前和malloc后的maxrss是一样的,不知问题在哪
试过valgrind,但是只能在一定频率的time_unit取到信息,没办法在任意语
句执行后取到信息
试过读/proc/self/stat,但是换到cluster上跑程序的时侯stat文件跟单机的
stat问题看着不一样,一堆数字不知道哪个才是我要的
有人也提议过重载new,自己算内存的实用。但是我还要用别人的library,
不可能把别人的code也重载一遍
苍天啊大地啊,谁告诉我一个work的方法吧

【在 c*******h 的大作中提到】
: 查看当前程序用了多少内存?
t****t
发帖数: 6806
5
getrusage will give the memory size allocated by OS. not each malloc will
allocate memory from OS, that would be too slow. /proc/self/stat should be
the same as getrusage. your required information should be in glibc, so
check glibc document.

【在 c*******h 的大作中提到】
: 试过getrusage,但是malloc前和malloc后的maxrss是一样的,不知问题在哪
: 试过valgrind,但是只能在一定频率的time_unit取到信息,没办法在任意语
: 句执行后取到信息
: 试过读/proc/self/stat,但是换到cluster上跑程序的时侯stat文件跟单机的
: stat问题看着不一样,一堆数字不知道哪个才是我要的
: 有人也提议过重载new,自己算内存的实用。但是我还要用别人的library,
: 不可能把别人的code也重载一遍
: 苍天啊大地啊,谁告诉我一个work的方法吧

c*******h
发帖数: 1096
6
我man了一下proc,知道了所有/proc/self/stat里面44个数字的意思
里面有一个vsize,应该是我要的
stat里面还有一个项,是rss,跟getrusage里面的maxrss不一样

【在 t****t 的大作中提到】
: getrusage will give the memory size allocated by OS. not each malloc will
: allocate memory from OS, that would be too slow. /proc/self/stat should be
: the same as getrusage. your required information should be in glibc, so
: check glibc document.

t****t
发帖数: 6806
7
vsize or rss doesn't reflect how much memory is allocated but not malloc()'
ed. again, it is impossible for OS has any idea on how much memory you
malloc()'ed. if anyone knows, it must be glibc. it's useless to look into /
proc.

【在 c*******h 的大作中提到】
: 我man了一下proc,知道了所有/proc/self/stat里面44个数字的意思
: 里面有一个vsize,应该是我要的
: stat里面还有一个项,是rss,跟getrusage里面的maxrss不一样

c*******h
发帖数: 1096
8
呃,我要的不只是heap上,还包括stack里的。。。可能最开始我没说清楚吧

【在 t****t 的大作中提到】
: vsize or rss doesn't reflect how much memory is allocated but not malloc()'
: ed. again, it is impossible for OS has any idea on how much memory you
: malloc()'ed. if anyone knows, it must be glibc. it's useless to look into /
: proc.

t****t
发帖数: 6806
9
i think stack size is fixed when you link. so just add that number. in any
case, OS should have no idea, so it's still useless to look into /proc.

【在 c*******h 的大作中提到】
: 呃,我要的不只是heap上,还包括stack里的。。。可能最开始我没说清楚吧
c*******h
发帖数: 1096
10
我自己写过小程序验证过的。开个大数组,new前和new后比较一下vsize的大小,
delete前和delete后也比较一下。vsize的变化就是数组的大小

【在 t****t 的大作中提到】
: i think stack size is fixed when you link. so just add that number. in any
: case, OS should have no idea, so it's still useless to look into /proc.

相关主题
Android NDK哪个版本的依赖是glibc 2.12?关于 c malloc的一个问题
vector析构的时候怎么办?Memory Usage问题
gdb with big core file一个关于空间分配的问题
进入Programming版参与讨论
t****t
发帖数: 6806
11
大数组当然是这样的, 因为大数组是直接向OS分配的. 系统的假设是小规模的内存是经
常分配的, 所以小尺寸是向堆分配的. 大尺寸不常分配, 是直接向OS要的. OS调用的速
度比向堆申请要慢很多很多.
你试试看10个10个字节分配.

【在 c*******h 的大作中提到】
: 我自己写过小程序验证过的。开个大数组,new前和new后比较一下vsize的大小,
: delete前和delete后也比较一下。vsize的变化就是数组的大小

a***y
发帖数: 2803
12
c里面没有new/delete吧,而是malloc(),free.
new/delete 用的是free store,而不是heap.

【在 c*******h 的大作中提到】
: 我自己写过小程序验证过的。开个大数组,new前和new后比较一下vsize的大小,
: delete前和delete后也比较一下。vsize的变化就是数组的大小

c*******h
发帖数: 1096
13
难道所谓的“直接向OS分配”不是向堆里要的?无论是给了需要的那么多,还是多给了
很多,要过来的那一部分内存就是当前进程的,别人也用不了。我需要的就是想知道归
自己的而别人不能用的内存啊。这不就是vsize的意思么?

【在 t****t 的大作中提到】
: 大数组当然是这样的, 因为大数组是直接向OS分配的. 系统的假设是小规模的内存是经
: 常分配的, 所以小尺寸是向堆分配的. 大尺寸不常分配, 是直接向OS要的. OS调用的速
: 度比向堆申请要慢很多很多.
: 你试试看10个10个字节分配.

c*******h
发帖数: 1096
14
我一直以为free store是heap的俗称。。。有什么区别?

【在 a***y 的大作中提到】
: c里面没有new/delete吧,而是malloc(),free.
: new/delete 用的是free store,而不是heap.

D*******a
发帖数: 3688
15
did you try tcmalloc and its heap profiler?

【在 c*******h 的大作中提到】
: 试过getrusage,但是malloc前和malloc后的maxrss是一样的,不知问题在哪
: 试过valgrind,但是只能在一定频率的time_unit取到信息,没办法在任意语
: 句执行后取到信息
: 试过读/proc/self/stat,但是换到cluster上跑程序的时侯stat文件跟单机的
: stat问题看着不一样,一堆数字不知道哪个才是我要的
: 有人也提议过重载new,自己算内存的实用。但是我还要用别人的library,
: 不可能把别人的code也重载一遍
: 苍天啊大地啊,谁告诉我一个work的方法吧

t****t
发帖数: 6806
16
"堆" 有两个意思, 你说的是哪一个?
操作系统管理空余内存, 马马虎虎可以叫堆, 虽然不是按照堆来管理的. 向操作系统申
请内存是从这些空余内存申请的. 另外, 你的libc管理一个私有堆, 你申请100次1个字
节, libc可能只从操作系统分配一次. 另一方面, 如果你申请100次50M字节, 可能libc
每次都从操作系统分配.
如果你想要的是别的进程不能用的内存, 你可能是对的, 但是我也不清楚vsize里是不
是包括了mmap的尺寸.

【在 c*******h 的大作中提到】
: 难道所谓的“直接向OS分配”不是向堆里要的?无论是给了需要的那么多,还是多给了
: 很多,要过来的那一部分内存就是当前进程的,别人也用不了。我需要的就是想知道归
: 自己的而别人不能用的内存啊。这不就是vsize的意思么?

1 (共1页)
进入Programming版参与讨论
相关主题
malloc per-thread arena有谁对glibc的allocator有研究?
超牛的debugAndroid NDK哪个版本的依赖是glibc 2.12?
a question about memory.vector析构的时候怎么办?
purify和valgrind的比较gdb with big core file
被ptmalloc坑了关于 c malloc的一个问题
有没有这样的memory management library?Memory Usage问题
ask for help about AMD cluster一个关于空间分配的问题
C++中释放的内存可能立即返回系统吗?奇怪的问题:关于一个简单的malloc()小程序 (转载)
相关话题的讨论汇总
话题: os话题: malloc话题: vsize话题: getrusage话题: stat