iOS kernel allocates around 700mb of virtual memory per process. So that will be your limit.
The limit you have on RAM will differ as the kernel pages data into RAM from virtual memory as you touch on the mapped data. When the RAM itself fills up, around 40mb on the iphone 4, depending on how much RAM is wired by other applications, and you request more mapped data, the kernel will need to page data out of RAM and replace it with the requested data by paging it into RAM.
Another thing to remember is that if you use PROT_READ | PROT_WRITE
then you are allowing data to be written to the mapped file. This will then impact the 700mb of allocated space if you decide to write data to the mapped file.
So the limit is 700mb for virtual memory, whether you map one file of 500mb and then write another 200mb of data to it, or if you have e.g. 10 X 70mb mapped files that you just read.
One last thing is that you can release the opened file that was the source of the mapped data as soon as you have received a successfully mapped file using mmap()
.
Hope this helps.
Additional info:
Regarding the iphone's 700mb virtual memory and around 40mb RAM, this comes from doing profiling using instruments.
Regarding the actual workings of a systems memory management. Read up on virtual memory
Regarding how this works on iOS. Read the apple docs on virtual memory which focuses on OS X, but mentions differences on iOS