I like this isolation because we can also kill parsers blocked into a infinite loop.
But there might be an issue at least on GNU/Linux systems (vanilla kernel) because of how processes are created.
Indeed, creating a process required the same amount of free memory as the memory consumed by the parent process (fork() then exec()).
This can be a big issue for enterprise server where a lot of memory is dedicated to the JVM and creating subprocesses would result in the system swapping or error like "Cannot run program "java": java.io.IOException: error=12, Cannot allocate memory".
A solution often recommended is to start one light process parallel to the main one and communicate with it (e.g. by socket) to create the subprocesses.
More information can be found here: