Hi, welcome to the forum.
I know, but really does smell like an uncontrolled loop (or recursion)
There are many threads on the forum for this topic: Search results for '"JavaScript heap out of memory" order:latest' - Node-RED Forum
This one was a little different.
which was resolved like this:
Where you set max_old_space_size
will depend on how you are running node-red (do a search)
but the 100% CPU spike really really smells like a hard, blocking loop - so perhaps a buggy contrib? or some recursive (self calling) function node code? or an invisible loop caused by link nodes or MQTT?