すいません、Javaの変数は値渡しだということで質問です。

例えば1Gバイトの超巨大ファイルをバイナリーデータとして
バッファに読み込み、全てバイト配列にコピーしてreturnするような
メソッドを作ったとします。
すると、呼び出し側で用意する受け用のバイト配列と合わせ、
実に3GBのメモリが必要になると思うのですが、マジな話なのでしょうか。