Hi, make sure to cap the frame rate at some limit (e.g. the refresh rate of the monitor or something like 60. You can use the console commant t.maxfps EnterDesiredFramerateHere to set a frame rate limit). If the frame rate is unlimited (by default it is unlimited), then either the CPU or GPU will always run at full speed (whatever bottlenecks), even if a much lower speed would be enough to get a sufficient frame rate. So if the frame rate is umlimited, then even if you would have a RTX 4090 it might/would still get hot.
If the framerate is limited, then the other step would be to optimize the game to reduce the load on the GPU. There a different resources for optimization, what I usually use is the gpu profiler (easiest to use, just type the console command profilegpu then optimize what takes up most of the frame time). The more in depth tool would be render doc. Render doc will show you the times the individual materials take up.