I use either nvidia-settings or disper to switch monitors in TwinView configuration. I noticed Xorg leaking heap memory while switching the monitors.
Code:
[laloch@uriel ~]$ sudo cat /proc/$(pidof X)/smaps | head -n 75 | tail -n 15
013b8000-02036000 rw-p 00000000 00:00 0 [heap]
Size: 12792 kB
Rss: 12588 kB
Pss: 12588 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 12588 kB
Referenced: 12588 kB
Anonymous: 12588 kB
AnonHugePages: 2048 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
[laloch@uriel ~]$ disper -S
[laloch@uriel ~]$ sudo cat /proc/$(pidof X)/smaps | head -n 75 | tail -n 15
013b8000-04152000 rw-p 00000000 00:00 0 [heap]
Size: 46696 kB
Rss: 44408 kB
Pss: 44408 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 44408 kB
Referenced: 44408 kB
Anonymous: 44408 kB
AnonHugePages: 2048 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
[laloch@uriel ~]$ disper -s
[laloch@uriel ~]$ sudo cat /proc/$(pidof X)/smaps | head -n 75 | tail -n 15
013b8000-074cc000 rw-p 00000000 00:00 0 [heap]
Size: 99408 kB
Rss: 79492 kB
Pss: 79492 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 79492 kB
Referenced: 79492 kB
Anonymous: 79492 kB
AnonHugePages: 30720 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
[laloch@uriel ~]$ disper -S
[laloch@uriel ~]$ sudo cat /proc/$(pidof X)/smaps | head -n 75 | tail -n 15
013b8000-09511000 rw-p 00000000 00:00 0 [heap]
Size: 132452 kB
Rss: 108096 kB
Pss: 108096 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 108096 kB
Referenced: 108096 kB
Anonymous: 108096 kB
AnonHugePages: 53248 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB