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.