This isn’t very pretty or precise, but it does eat up a ton of memory. Use svmon -P or svmon -S PID to see what is going on:
#include
#include
#ifndef BUFSIZE
#define BUFSIZE 20480
#endif
#ifndef NBUFS
#define NBUFS 81920
#endif
int main(void)
{
size_t nbytes = 2147483647;
char *p[9555559];
char *q[9555559];
char *r[9555559];
char *s[9555559];
int x;
if (nbytes == 0)
nbytes = 1;
(void) printf("Allocating %zu bytes\n", nbytes);
(void) fflush(stdout);
for (x = 0 ; x < 9555559 ; x = x + 1 )
{
p[x] = malloc(nbytes);
q[x] = malloc(nbytes);
r[x] = malloc(nbytes);
s[x] = malloc(nbytes);
}
(void) pause();
return (EXIT_SUCCESS);
}
Also, here is an svmon script for all processes:
ps aux | while read A B C
do
svmon -P $B | grep $B
done