I also had this issue.
The cache used by the iPad for preloading the video stream, was not emptied completely.
So each time, this page with the video player was cleaned up and released, the allocated memory after cleanup still contained the cached memory. For big video's, this could be up to 50 MB.
This is actually not a memory leak:
If the page was opened again, the cache was re-allocated. But still frustating as you want a clean exit situation, meaning when this page is left and cleaned up, all memory used by this page should be released, including the memory used for caching the video stream....!
After some serious tweeking, this sequence of commands seems to do the job:
======================
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:myMoviePlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerDidExitFullscreenNotification
object:myMoviePlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerLoadStateDidChangeNotification
object:myMoviePlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMovieDurationAvailableNotification
object:myMoviePlayer];
[myMoviePlayer pause];
myMoviePlayer.initialPlaybackTime = -1;
[myMoviePlayer stop];
myMoviePlayer.initialPlaybackTime = -1;
[myMoviePlayer.view removeFromSuperview];
[myMoviePlayer release];
=================================
In steps:
1 - REMOVE all notifiers you are using for your movie player.
2 - Pause the movie
3 - set the Playback time to start
4 - stop the movie
5 - set the Playback time again to start
6 - now remove the movie View
7 - and finally release the movie player
Resulting in my case in also the video cache memory being released on my iPad (OS 4.2.)
and leaving a clean allocated memory situation, equal to the size before the page with the video player was openen. So same enter and exit memory.
Hope this helps......