Fix vertical alignment in beamer

I am using a beamer frame in which the top has alternating list items, and the bottom has a picture. The problem is that because of the different number of rows for each item, the picture changes vertical position as I move between list items, as I show in the following code. Does anyone know how to "stick" it in place, at the bottom?

\documentclass{beamer}
\begin{document}
\begin{frame}[t]{System overview}
\begin{minipage}{\textwidth}
\begin{itemize}
\item<1|only@1> item1 (a single row)
\item<2|only@2> item2 \\ has 2 rows
\item<3|only@3> item3
\end{itemize}
\end{minipage}
\vfill
\begin{minipage}{\textwidth}
\centering
\includegraphics[scale=0.65]{picture.jpg}
\end{minipage}
\end{frame}
\end{document}

-

Assign a defined height to the top minipage:

\documentclass{beamer}
\begin{document}
\begin{frame}[t]{System overview}
\begin{minipage}[t][0.5\textheight][t]{\textwidth}
\begin{itemize}
\item<1|only@1> item1 (a single row)
\item<2|only@2> item2 \\ has 2 rows
\item<3|only@3> item3
\end{itemize}
\end{minipage}
\vfill
\begin{minipage}{\textwidth}
\centering
\includegraphics[scale=0.65]{picture.jpg}
\end{minipage}
\end{frame}
\end{document}

-

Try \vskip0pt plus 1filll instead

\documentclass[demo]{beamer}

\begin{document}
\begin{frame}[t]{System overview}
\begin{minipage}{\textwidth}
\begin{itemize}
\item<1|only@1> item1 (a single row)
\item<2|only@2> item2 \\ has 2 rows
\item<3|only@3> item3
\end{itemize}
\end{minipage}
\vskip0pt plus 1filll
\begin{minipage}{\textwidth}
\centering
\includegraphics[scale=0.65]{picture.jpg}
\end{minipage}
\end{frame}
\end{document}


This is what beameruserguide suggests.

-
That's excellent. Where does the user guide suggest this if you don't mind me asking? I was unable to find it. –  Roelof Spijker Jan 23 '12 at 11:29
In my copy it can be found on page 62. (The very last example). –  bloodworks Jan 23 '12 at 12:33
+1 That is indeed cool (and preferable too my suggestion of explicitly specifying the minipage's height). –  Daniel Jan 23 '12 at 12:40
I see, too bad that it does not explain exactly what is going on. (That is, why it is even required, apparently there is some vfill generated at the end of the frame, but I can't find it specified anywhere, short of going through the code by hand). Thanks anyway :) –  Roelof Spijker Jan 23 '12 at 13:29
There are different stretchable spaces with different names, the more l's you add the more priority the space has. I believe you can put 1, 2 or 3 of them. The plus in command says to TeX "increase the 0pt by vfilll if you get smaller badness (badness measures how "nice" is the output). –  tohecz Jan 23 '12 at 19:20