Alguns sinalizadores JVM interrompem o processo em segundo plano inesperadamente

Alguns sinalizadores JVM interrompem o processo em segundo plano inesperadamente

Tenho executado um servidor Minecraft local para meus filhos em casa e, à medida que mais pessoas aderem, o atraso se tornou um problema... e, ultimamente, o jogo trava (quando um único "tique" do jogo leva mais de 60 segundos, o jogo desliga automaticamente a JVM).

Experimentar alguns sinalizadores JVM recomendados resultou na interrupção automática (e silenciosa) do kernel do processo java em segundo plano, e não sei por quê.

A máquina host é um i7 quad-core (8 threads) com 32 GB de RAM rodando o Fedora 31.

Java é o tempo de execução SE da Oracle:

java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

Originalmente, a string de comando de lançamento do jogo funcional era:

java -Xms2G -Xmx4G -server -XX:+UseG1GC -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false -jar minecraft_server.1.15.2.jar nogui &

Adicionar os sinalizadores JVM recomendados para otimizar o desempenho resultou na interrupção silenciosa do processo java em segundo plano pelo sistema operacional:

java -Xms10G -Xmx10G -server -XX:+UseG1GC -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch  -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=8 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=true -Daikars.new.flags=true -jar minecraft_server.1.15.2.jar nogui &

Verifiquei que as alterações XMS/XMX não foram responsáveis, testando-as de forma independente usando meu conjunto original de sinalizadores JVM.

A execução deste comando resulta na inicialização da JVM e no início da inicialização do servidor do jogo e, em seguida, na parada repentina. Os relatórios do sistema operacional:[1] Parado

Posso trazê-lo manualmente para primeiro plano e ele retoma a execução normalmente (também funciona bem quando o inicio em primeiro plano). Qualquer tentativa de retorná-lo ao segundo plano resulta na parada automática do processo novamente.

No entanto, se eu executar a mesma string de comando usandonada, então o processo se comporta conforme o esperado... ou seja, o processo java do jogo realmente é executado em segundo plano.

Então, minha pergunta para qualquer kernel e/ou gurus de Java, o que em meus sinalizadores JVM está fazendo com que o sistema operacional interrompa o processo quando ele é iniciado em segundo plano?

EDITAR - Informações adicionais

Analisando através donohup.outarquivo, vejo este erro que NÃO ocorre ao iniciar o processo jvm em primeiro plano.

[04:12:38] [Server thread/INFO]: Starting minecraft server version 1.15.2
[04:12:38] [Server thread/INFO]: Loading properties
[04:12:38] [Server thread/INFO]: Default game type: SURVIVAL
[04:12:38] [Server thread/INFO]: Generating keypair
[04:12:38] [Server console handler/ERROR]: Exception handling console input
java.io.IOException: Bad file descriptor
        at java.io.FileInputStream.readBytes(Native Method) ~[?:1.8.0_231]
        at java.io.FileInputStream.read(FileInputStream.java:255) ~[?:1.8.0_231]
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:284) ~[?:1.8.0_231]
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345) ~[?:1.8.0_231]
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:1.8.0_231]
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:1.8.0_231]
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:1.8.0_231]
        at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[?:1.8.0_231]
        at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:1.8.0_231]
        at java.io.BufferedReader.readLine(BufferedReader.java:324) ~[?:1.8.0_231]
        at java.io.BufferedReader.readLine(BufferedReader.java:389) ~[?:1.8.0_231]
        at wd$2.run(SourceFile:110) [minecraft_server.1.15.2.jar:?]
[04:12:38] [Server thread/INFO]: Starting Minecraft server on *:25512
[04:12:38] [Server thread/INFO]: Using epoll channel type

informação relacionada