I've written a program for a class that my professor will be testing in various low memory environments to see how it behaves when the program runs out of memory. Is there a way I can simulate the execution in a low memory environment without creating a virtual machine?

1 Answer 1


You'll want to use ulimit

ulimit can be used to limit memory utilization (among other things)

Here is an example of setting memory usage so low that /bin/ls (which is larger than /bin/cat) no longer works, but /bin/cat still works.

$ ls -lh /bin/ls /bin/cat
-rwxr-xr-x 1 root root 25K May 24 2008 /bin/cat
-rwxr-xr-x 1 root root 88K May 24 2008 /bin/ls
$ date > test.txt
$ ulimit -d 10000 -m 10000 -v 10000
$ /bin/ls date.txt
/bin/ls: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory
$ /bin/cat date.txt
Thu Mar 26 11:51:16 PDT 2009

Note: If I set the limits to 1000 kilobytes, neither program works, because they load libraries, which increase their size. above 1000 KB.

-d data segment size

-m max memory size

-v virtual memory size

Run ulimit -a to see all the resource caps ulimits can set.

  • is there something that does something similar on a single user basis? I don't have the permission to make system wide changes.
    – user20222
    Apr 24, 2010 at 11:51
  • @user20222: You can use ulimit at the command line or in a script in Bash. Apr 24, 2010 at 13:20
  • I'm getting-- ulimit: max memory size: cannot modify limit: Operation not permitted
    – user20222
    Apr 24, 2010 at 13:32
  • What exactly did you try? Post the command line you used
    – basszero
    Apr 25, 2010 at 17:12
  • "ulimit -m 1000" and "ulimit -H -m 1000". I also did this: "ulimit -S -m 1000" which didn't error, but it did not enforce the memory limit for the program.
    – user20222
    Apr 26, 2010 at 2:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.