|
From: l. <238...@qq...> - 2012-11-29 02:18:40
|
hi :
When I do some operation(open many threads and exit these threads) in my program, memory used increase, when I exit my program, valgrind tell me there is no memory leak.What I expect is after "open many threads and exit these threads", the memory used is keep same as before.How can I found my code problem like this ? Thanks.
pmap
run before
08052000 4 rw--- 0000000000009000 008:00001 maintest
08eed000 132 rw--- 0000000000000000 000:00000 [ anon ]
b6fd7000 4 ----- 0000000000000000 000:00000 [ anon ]
b6fd8000 8204 rw--- 0000000000000000 000:00000 [ anon ]
b77e9000 16 rw--- 0000000000000000 000:00000 [ anon ]
bfbc9000 84 rw--- 0000000000000000 000:00000 [ stack ]
mapped: 12400K writeable/private: 8568K shared: 0K
run 1
08052000 4 rw--- 0000000000009000 008:00001 maintest
08ea3000 132 rw--- 0000000000000000 000:00000 [ anon ]
63d68000 4 ----- 0000000000000000 000:00000 [ anon ]
63d69000 8192 rw--- 0000000000000000 000:00000 [ anon ]
6ae00000 132 rw--- 0000000000000000 000:00000 [ anon ]
6ae21000 892 ----- 0000000000000000 000:00000 [ anon ]
6cf7a000 4 ----- 0000000000000000 000:00000 [ anon ]
6cf7b000 8192 rw--- 0000000000000000 000:00000 [ anon ]
71000000 132 rw--- 0000000000000000 000:00000 [ anon ]
71021000 892 ----- 0000000000000000 000:00000 [ anon ]
7aa00000 132 rw--- 0000000000000000 000:00000 [ anon ]
7aa21000 892 ----- 0000000000000000 000:00000 [ anon ]
943ff000 4 ----- 0000000000000000 000:00000 [ anon ]
94400000 8192 rw--- 0000000000000000 000:00000 [ anon ]
94c00000 132 rw--- 0000000000000000 000:00000 [ anon ]
94c21000 892 ----- 0000000000000000 000:00000 [ anon ]
b0600000 132 rw--- 0000000000000000 000:00000 [ anon ]
b0621000 892 ----- 0000000000000000 000:00000 [ anon ]
b6802000 4 ----- 0000000000000000 000:00000 [ anon ]
b6803000 8192 rw--- 0000000000000000 000:00000 [ anon ]
b7003000 4 ----- 0000000000000000 000:00000 [ anon ]
b7004000 8204 rw--- 0000000000000000 000:00000 [ anon ]
b7815000 16 rw--- 0000000000000000 000:00000 [ anon ]
bf987000 84 rw--- 0000000000000000 000:00000 [ stack ]
mapped: 50304K writeable/private: 41996K shared: 0K
run 2
08052000 4 rw--- 0000000000009000 008:00001 maintest
08ea3000 132 rw--- 0000000000000000 000:00000 [ anon ]
56c00000 132 rw--- 0000000000000000 000:00000 [ anon ]
56c21000 892 ----- 0000000000000000 000:00000 [ anon ]
63567000 4 ----- 0000000000000000 000:00000 [ anon ]
63568000 8192 rw--- 0000000000000000 000:00000 [ anon ]
645f3000 4 ----- 0000000000000000 000:00000 [ anon ]
645f4000 8192 rw--- 0000000000000000 000:00000 [ anon ]
64df4000 4 ----- 0000000000000000 000:00000 [ anon ]
64df5000 8192 rw--- 0000000000000000 000:00000 [ anon ]
6ae00000 132 rw--- 0000000000000000 000:00000 [ anon ]
6ae21000 892 ----- 0000000000000000 000:00000 [ anon ]
71000000 132 rw--- 0000000000000000 000:00000 [ anon ]
71021000 892 ----- 0000000000000000 000:00000 [ anon ]
7aa00000 132 rw--- 0000000000000000 000:00000 [ anon ]
7aa21000 892 ----- 0000000000000000 000:00000 [ anon ]
94c00000 132 rw--- 0000000000000000 000:00000 [ anon ]
94c21000 892 ----- 0000000000000000 000:00000 [ anon ]
b0600000 132 rw--- 0000000000000000 000:00000 [ anon ]
b0621000 892 ----- 0000000000000000 000:00000 [ anon ]
b6802000 4 ----- 0000000000000000 000:00000 [ anon ]
b6803000 8192 rw--- 0000000000000000 000:00000 [ anon ]
b7003000 4 ----- 0000000000000000 000:00000 [ anon ]
b7004000 8204 rw--- 0000000000000000 000:00000 [ anon ]
b7815000 16 rw--- 0000000000000000 000:00000 [ anon ]
bf987000 84 rw--- 0000000000000000 000:00000 [ stack ]
mapped: 51328K writeable/private: 42128K shared: 0K
run 3
08052000 4 rw--- 0000000000009000 008:00001 maintest
08ea3000 132 rw--- 0000000000000000 000:00000 [ anon ]
56c00000 132 rw--- 0000000000000000 000:00000 [ anon ]
56c21000 892 ----- 0000000000000000 000:00000 [ anon ]
59400000 132 rw--- 0000000000000000 000:00000 [ anon ]
59421000 892 ----- 0000000000000000 000:00000 [ anon ]
67dfa000 4 ----- 0000000000000000 000:00000 [ anon ]
67dfb000 8192 rw--- 0000000000000000 000:00000 [ anon ]
685fb000 4 ----- 0000000000000000 000:00000 [ anon ]
685fc000 8192 rw--- 0000000000000000 000:00000 [ anon ]
68dfc000 4 ----- 0000000000000000 000:00000 [ anon ]
68dfd000 8192 rw--- 0000000000000000 000:00000 [ anon ]
6ae00000 132 rw--- 0000000000000000 000:00000 [ anon ]
6ae21000 892 ----- 0000000000000000 000:00000 [ anon ]
71000000 132 rw--- 0000000000000000 000:00000 [ anon ]
71021000 892 ----- 0000000000000000 000:00000 [ anon ]
7aa00000 132 rw--- 0000000000000000 000:00000 [ anon ]
7aa21000 892 ----- 0000000000000000 000:00000 [ anon ]
94c00000 132 rw--- 0000000000000000 000:00000 [ anon ]
94c21000 892 ----- 0000000000000000 000:00000 [ anon ]
b0600000 132 rw--- 0000000000000000 000:00000 [ anon ]
b0621000 892 ----- 0000000000000000 000:00000 [ anon ]
b6802000 4 ----- 0000000000000000 000:00000 [ anon ]
b6803000 8192 rw--- 0000000000000000 000:00000 [ anon ]
b7003000 4 ----- 0000000000000000 000:00000 [ anon ]
b7004000 8204 rw--- 0000000000000000 000:00000 [ anon ]
b7815000 16 rw--- 0000000000000000 000:00000 [ anon ]
bf987000 84 rw--- 0000000000000000 000:00000 [ stack ]
mapped: 52352K writeable/private: 42260K shared: 0K
Thanks
chris |
|
From: John R. <jr...@bi...> - 2012-11-29 06:07:57
|
The pattern > 6cf7a000 4 ----- 0000000000000000 000:00000 [ anon ] > 6cf7b000 8192 rw--- 0000000000000000 000:00000 [ anon ] with one 4KiB page of no access (-----) adjacent to 8MiB of rw--- is [or perhaps, was] the default-sized stack of a thread. When a thread terminates, then glibc keeps that stack on a separate internal list, and allocates the stack for a new thread from this list if possible; else glibc uses mmap() to create a new stack. It seems that there is no way to tell glibc to do it differently. (You can change the default size by using pthread_attr_setstacksize(), but you cannot change the policy of keeping old stacks for use by new threads.) The pattern > 71000000 132 rw--- 0000000000000000 000:00000 [ anon ] > 71021000 892 ----- 0000000000000000 000:00000 [ anon ] with 132KiB of rw--- followed by 892KiB of no access is a peculiar one that I do not recall seeing before. -- |