I record everything on Plex off an antenna/hdhomerun and fast forward through all the cruft. We can watch about 3-4 hours of coverage each hour depending on the sport. There’s no way I could watch it live. Plex will get a bit confused about whether or not an episode is new or not, so to prevent it missing anything I post process each file into a new library and fix up the episode name with a timestamp. This does result in some repeated recordings, but we just delete any matches we’ve already seen. Been doing it this way for the last few Olympics and it’s manageable.
This is normal behavior. There is much more to the JVMs memory usage beyond what’s allocated to the heap - there are other memory regions as well. There are additional tuning options for them, but it’s a complicated subject and if you aren’t actually encountering out of memory issues you have to ask if this is worth the effort to tune it.