When measuring any application's memory usage, you must be
careful to distinguish between physical system RAM used and virtual
mappings of shared resources. For example, most shared libraries exist
only once in physical memory but are mapped into multiple processes.
This memory should only be counted once when computing total memory
usage. In the same way, the video memory on a graphics card or
register memory on any device can be mapped into multiple processes.
These mappings do not consume normal system RAM.
This has been a frequently discussed topic on XFree86 mailing
lists; see, for example:
The `pmap` utility described in the above thread and available here:
is a useful tool in distinguishing between types of memory mappings.
For example, while `top` may indicate that X is using several hundred
MB of memory, the last line of output from pmap:
mapped: 287020 KB writable/private: 9932 KB shared: 264656 KB
reveals that X is really only using roughly 10MB of system RAM
(the "writable/private" value).
Note, also, that X must allocate resources on behalf of X clients (the
window manager, your web browser, etc); X's memory usage will increase
as more clients request resources such as pixmaps, and decrease as
you close X applications.