diff --git a/redline/compiler/src/main/java/run/endive/redline/experimental/compiler/internal/NativeCompiler.java b/redline/compiler/src/main/java/run/endive/redline/experimental/compiler/internal/NativeCompiler.java index cafc8e092..d0f4f8079 100644 --- a/redline/compiler/src/main/java/run/endive/redline/experimental/compiler/internal/NativeCompiler.java +++ b/redline/compiler/src/main/java/run/endive/redline/experimental/compiler/internal/NativeCompiler.java @@ -101,7 +101,15 @@ int branchArgCount() { private static final int THREAD_COUNT = Math.max(1, Runtime.getRuntime().availableProcessors() / 2); - private static final ExecutorService POOL = Executors.newFixedThreadPool(THREAD_COUNT); + // Use daemon threads to avoid keeping an active JVM running no work in the background + private static final ExecutorService POOL = + Executors.newFixedThreadPool( + THREAD_COUNT, + task -> { + Thread thread = new Thread(task, "redline-compiler"); + thread.setDaemon(true); + return thread; + }); public static byte[][] compileAll(String triple, WasmModule module) { return new NativeCompiler(null, triple, module).compileAll((boolean[]) null);