diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java b/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java index 4e5d62e1..a393d8ef 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java @@ -79,5 +79,6 @@ public class AutoShutdownListener implements Listener { } }, 20, 20); } + System.out.println("LEAVE"); } } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java b/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java index 4996b0aa..6859cff9 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java @@ -20,23 +20,30 @@ package de.steamwar.bausystem.features.world; import lombok.experimental.UtilityClass; -import org.bukkit.Bukkit; -import java.lang.management.ManagementFactory; -import java.util.logging.Level; +import java.io.*; @UtilityClass public class RamUsage { + private File meminfo = new File("/proc/meminfo"); + public static double getUsage() { - try { - long memorySize = ((com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean()).getTotalPhysicalMemorySize(); - long freeMemory = ((com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean()).getFreePhysicalMemorySize(); - return (memorySize - freeMemory) / (double) memorySize; - } catch (Throwable throwable) { - Bukkit.getLogger().log(Level.WARNING, throwable.getMessage(), throwable); + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(meminfo)))) { + String memTotal = bufferedReader.readLine().replaceAll(" +", " "); + bufferedReader.readLine(); + String memAvailable = bufferedReader.readLine().replaceAll(" +", " "); + + long memTotalLong = getNumber(memTotal); + long memAvailableLong = getNumber(memAvailable); + return (memTotalLong - memAvailableLong) / (double) memTotalLong; + } catch (IOException e) { return 1D; } } + private static long getNumber(String s) { + return Long.parseLong(s.split(" ")[1]); + } + }