- publishing free software manuals
An Introduction to GCC - for the GNU compilers gcc and g++
by Brian J. Gough, foreword by Richard M. Stallman
Paperback (6"x9"), 144 pages
ISBN 0954161793
RRP £12.95 ($19.95)

"An excellent introduction... fills a much-needed niche in the marketplace" --- Association of C and C++ Users book review (Issue 16-4, August 2004) Get a printed copy>>>

9.5 Preventing excessive memory usage

Sometimes a programming error will cause a process to allocate huge amounts of memory, consuming all the RAM on a system. To prevent this, the GNU Bash command ulimit -v limit can be used to restrict the amount of virtual memory available to each process. The limit is measured in kilobytes and applies to new processes started in the current shell. For example,

$ ulimit -v 4096

will limit subsequent processes to 4 megabytes of virtual memory (4096k). By default the limit cannot be increased in the same session once it has been applied, so it is best to start a separate shell for reduced ulimit operations. Alternatively, you can set a soft limit (which can be undone) with the options -S -v.

In addition to preventing run-away processes, limiting the amount of memory a program is allowed to allocate also provides a way to test how robustly out of memory conditions are handled. An artificially low limit can be used to simulate running out of memory--a well-written program should not crash in this case.

The ulimit command supports other options including -p, which restricts the number of child processes that can be created, and -t, which places a limit on the number of CPU seconds that a process can run for. The complete list of settings can be shown with the command ulimit -a. To display more information about the ulimit command, type help ulimit at the Bash prompt.

ISBN 0954161793An Introduction to GCC - for the GNU compilers gcc and g++See the print edition