Are Java records similar to C# structs? I mean, if they are stack allocated instead of using references like classes, that are allocated on heap.
No. Records are just a simpler way of writing value classes, but are not allocated any differently than normal objects.
(This is not to say that such types aren't in progress -- they are -- but records are not this feature.)