According to man setrlimit (which is what man ulimit directs me to),


Specifies the limit (in bytes) of the process's resident set (the number of virtual pages resident in RAM). This limit has effect only in Linux 2.4.x, x < 30, and there affects only calls to madvise(2) specifying MADV_WILLNEED.

So it seems that ulimit (and setrlimit) can only restrict the virtual memory used by a process. On the other hand, answers like this one assert (rightly, it seems) that virtual memory is an almost meaningless statistic, especially in, e.g., Java applications where it is typical to request far more virtual memory than will be used.

So I'm wondering about the history of this seeming disconnect between what limits I can impose on the system and what numbers are actually meaningful. Insofar as it can be answered, why is this the present state of things?

Your Answer

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

Browse other questions tagged or ask your own question.