If there are no pointers from "old" to "new" objects, then there are no cycles and (compiler-assisted) reference counting will handle it.
Cheney's copying collector? You're gonna have huge garbage-to-live ratio with immutable objects, and this algorithm is pretty amazing for such scenarios.
Why would you garbage collect something that is going to change in the first place? By definition there isn't a way to reach it any more.