Внутри функции ссылка на параметр сохраняется в стеке. Ссылочная вещь может жить где угодно.
Когда некоторый код вызывает метод, обычно происходит выделение пространства в стеке исполняющего потока, и это пространство используется для хранения параметров, которые передаются в функцию. Если один из параметров «является объектом», то, что действительно в игре, - это ссылка на объект; эта ссылка копируется в стек, чтобы вызываемый код мог ее найти. Важно признать, что сам объект не копируется, а только ссылка.
В разделе пролога вызываемого кода обычно выделяется больше места в стеке для собственных локальных переменных метода, но внизу JVM имеет указатель на фрейм стека со всеми параметрами, поэтому вызываемый код может найти объект, названный параметром. Элементы, созданные с помощью 'new', будут выделяться из кучи и могут сохраняться даже после выхода из метода, но все элементы, расположенные в стеке, сбрасываются простым перемещением указателя стека туда, где он был до вызова.