From a03e3fea12b8e336770d896e5b0366d66065b91f Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Mon, 5 Mar 2018 20:23:23 +0800 Subject: [PATCH] Logs stopApplication stack trace --- .../java/org/jackhuang/hmcl/Launcher.java | 25 +++++++++++-------- .../org/jackhuang/hmcl/task/Schedulers.java | 3 +++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index 14909feba..5ad5a770a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -82,25 +82,28 @@ public final class Launcher extends Application { } public static void stopApplication() { - JFXUtilities.runInFX(() -> { - stopWithoutPlatform(); - Platform.exit(); - }); - } - - public static void stopWithoutPlatform() { - Logging.LOG.info("Stopping application without JavaFX Toolkit"); + Logging.LOG.info("Stopping application.\n" + StringUtils.getStackTrace(Thread.currentThread().getStackTrace())); JFXUtilities.runInFX(() -> { if (Controllers.getStage() == null) return; Controllers.getStage().close(); - - Logging.LOG.info("Shutting down executor services."); Schedulers.shutdown(); - Controllers.shutdown(); + Platform.exit(); + Lang.executeDelayed(OperatingSystem::forceGC, TimeUnit.SECONDS, 5, true); + }); + } + public static void stopWithoutPlatform() { + Logging.LOG.info("Stopping application without JavaFX Toolkit.\n" + StringUtils.getStackTrace(Thread.currentThread().getStackTrace())); + + JFXUtilities.runInFX(() -> { + if (Controllers.getStage() == null) + return; + Controllers.getStage().close(); + Schedulers.shutdown(); + Controllers.shutdown(); Lang.executeDelayed(OperatingSystem::forceGC, TimeUnit.SECONDS, 5, true); }); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java index e1c2ca9fe..d6ed22131 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java @@ -18,6 +18,7 @@ package org.jackhuang.hmcl.task; import org.jackhuang.hmcl.util.Constants; +import org.jackhuang.hmcl.util.Logging; import java.util.concurrent.*; @@ -115,6 +116,8 @@ public final class Schedulers { static final Scheduler NONE = new SchedulerImpl(Constants.emptyConsumer()); public static synchronized void shutdown() { + Logging.LOG.info("Shutting down executor services."); + if (CACHED_EXECUTOR != null) CACHED_EXECUTOR.shutdown();