To piggyback off this, the initial way to run IRIS under a certain user is to use setserviceusername:

https://docs.intersystems.com/iris20232/csp/docbook/DocBook.UI.Page.cls?KEY=GSA_using_windows#GSA_using_windows_nonadminperm_change

As far as I know you can then update the credentials from services as suggested above, but you may want to keep in mind using setserviceusername if you run into other credentials / Windows permission style issues.

Documentation shows that Java 8 and 11 are supported.

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ISP_technologies#ISP_ejb

11 support was added briefly before Java 17 LTS was released (early 2021 I believe), but it seems InterSystems' Java support has not been updated in the past 2 years. This is something we are working on, however I don't know when that change might be released.

The garbage collector is somewhat an internal process which is why I believe it is sparsely documented. I'd echo Dmitry that understanding your concern would help.

I think what is documented generally covers a high level understanding - that being that there is a GARCOL process. And that blocks are marked freed after a large kill by this process, to be freed in the background.

"Deadlock" is too broad to describe any possibility that could cause the instance to hang. I would recommend reaching out to the WRC/support when that occurs so they can analyze the system with you.

FWIW the first place I would look would be the messages.log which would point to next investigative steps. Alexander's IRIShung suggestion is also a good one.