I have never used memory mapped files to lower memory consumption. I think that your problem is that MapViewOfFile always returns pointer to unique address space, which will modify the same pages in you page file. I tried to find prove of that in MSDN, all I found is this article:
http://msdn.microsoft.com/en-us/library/ms810613.aspx
which I suppose explains it:
As mentioned above, you can have multiple views of the same memory-mapped file, and they can overlap. But what about mapping two identical views of the same memory-mapped file? After learning how to unmap a view of a file, you could come to the conclusion that it would not be possible to have two identical views in a single process because their base address would be the same, and you wouldn't be able to distinguish between them. This is not true. Remember that the base address returned by either the MapViewOfFile or the MapViewOfFileEx function is not the base address of the file view. Rather, it is the base address in your process where the view begins. So mapping two identical views of the same memory-mapped file will produce two views having different base addresses, but nonetheless identical views of the same portion of the memory-mapped file.
The point of this little exercise is to emphasize that every view of a single memory-mapped file object is always mapped to a unique range of addresses in the process. The base address will be different for each view. For that reason the base address of a mapped view is all that is required to unmap the view.
so MapViewOfFile returns addresses to memory that once committed will have assigned its own physical memory, which actually increases your process memory consumption - as you have described.
[edit]
actually, I am starting to see that even thought both MapViewOffFile returns addresses to unique virtual address spaces, they are both backed by the same physical RAM pages. You can read on this in Windows Via c/c++ in Memory-Mapped Files and Coherence
:
If multiple processes are mapping views of a single data file, the data is still coherent because there is still only one instance of each page of RAM within the data file—it's just that the pages of RAM are mapped into multiple process address spaces.
this is also proved by the trick in following blog:
http://blogs.msdn.com/b/oldnewthing/archive/2003/10/07/55194.aspx
the fact that resource monitor shows you memory consumption too high each time you access your view of file, is that it shows working set size which to my understanding might show shared memory twice.