PID SZ VSZ
5645 604 11064
PID SZ VSZ
5645 4516 14976
PID SZ VSZ
5645 2560 13020
(This is the output I get when running Joost's snippet —
even on an old Linux box with a rather rusty 2.6.16 kernel.)
The last memory printout is definately about 2M smaller (the
PV/string part of that scalar variable) than the previous one...
And strace shows — when I replace the system("/bin/ps",...) with
a simple print "---\n" (to leave a marker in the output):
$ strace ./746953.pl
(...)
brk(0x66a000) = 0x66a000
read(4, "#!/usr/bin/perl\n\nsub ps {\n #s"..., 8192) = 1003
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
write(1, "---\n", 4---
) = 4
mmap(NULL, 2002944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -
+1, 0) = 0x2ba8bbdd5000
mmap(NULL, 2002944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -
+1, 0) = 0x2ba8bbfbe000
write(1, "---\n", 4---
) = 4
munmap(0x2ba8bbfbe000, 2002944) = 0
write(1, "---\n", 4---
) = 4
lseek(4, 196, SEEK_SET) = 196
lseek(4, 0, SEEK_CUR) = 196
close(4) = 0
exit_group(0)
|