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
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?