I'm fairly sure that Remoting is Asynchronous. The docs state that the Apex heap size limit is 6Mb for a Synchronous op, and 12Mb for an Asynchronous op. However, from my RemoteAction (@Readonly) call I'm getting errors like
Apex heap size too large: 6041150
which I assume refers to bytes. Am I misunderstanding here? The only reason I need heap size at all is to get around the limit of 2000 for OFFSET statements.