Fixes gc hang

This commit is contained in:
Sotr
2018-06-17 16:39:03 +08:00
parent 9fedd2d94e
commit f7792c2510
4 changed files with 24 additions and 7 deletions

View File

@@ -0,0 +1,21 @@
package io.akarin.server.mixin.bootstrap;
import org.spigotmc.RestartCommand;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import io.akarin.api.internal.Akari;
import io.akarin.server.core.AkarinGlobalConfig;
@Mixin(value = RestartCommand.class, remap = false)
public abstract class MixinRestartCommand {
@Inject(method = "restart()V", at = @At("HEAD"))
public static void beforeRestart() {
if (AkarinGlobalConfig.noResponseDoGC) {
Akari.logger.warn("Attempting to garbage collect, may takes a few seconds");
System.runFinalization();
System.gc();
}
}
}

View File

@@ -17,7 +17,6 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import io.akarin.server.core.AkarinGlobalConfig;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
@Mixin(value = WatchdogThread.class, remap = false) @Mixin(value = WatchdogThread.class, remap = false)
@@ -75,11 +74,7 @@ public abstract class Watchcat extends Thread {
} }
log.log(Level.SEVERE, "------------------------------"); log.log(Level.SEVERE, "------------------------------");
if (AkarinGlobalConfig.noResponseDoGC) { if (restart) RestartCommand.restart(); // GC Inlined
log.log(Level.SEVERE, "Attempting to garbage collect, may takes a few seconds");
System.gc();
}
if (restart) RestartCommand.restart();
break; break;
} }

View File

@@ -11,6 +11,7 @@
"bootstrap.MixinMetrics", "bootstrap.MixinMetrics",
"bootstrap.ParallelRegistry", "bootstrap.ParallelRegistry",
"bootstrap.MetricsBootstrap", "bootstrap.MetricsBootstrap",
"bootstrap.MixinRestartCommand",
"core.MixinMCUtil", "core.MixinMCUtil",
"core.MixinCommandBan", "core.MixinCommandBan",