mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-21 00:00:13 +02:00
added load and deadlock detector in Memory util
This commit is contained in:
parent
290e24564b
commit
b71d13a014
|
@ -20,6 +20,9 @@
|
||||||
|
|
||||||
package net.yacy.cora.util;
|
package net.yacy.cora.util;
|
||||||
|
|
||||||
|
import java.lang.management.ManagementFactory;
|
||||||
|
import java.lang.management.ThreadInfo;
|
||||||
|
|
||||||
public class Memory {
|
public class Memory {
|
||||||
|
|
||||||
private static final Runtime runtime = Runtime.getRuntime();
|
private static final Runtime runtime = Runtime.getRuntime();
|
||||||
|
@ -45,7 +48,7 @@ public class Memory {
|
||||||
* @return bytes
|
* @return bytes
|
||||||
*/
|
*/
|
||||||
public static final long maxMemory() {
|
public static final long maxMemory() {
|
||||||
return runtime.maxMemory();
|
return runtime.maxMemory(); // can be Long.MAX_VALUE if unlimited
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,4 +67,33 @@ public class Memory {
|
||||||
return total() - free();
|
return total() - free();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the system load within the last minute
|
||||||
|
* @return the system load or a negative number if the load is not available
|
||||||
|
*/
|
||||||
|
public static double load() {
|
||||||
|
return ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* find out the number of thread deadlocks. WARNING: this is a time-consuming task
|
||||||
|
* @return the number of deadlocked threads
|
||||||
|
*/
|
||||||
|
public static long deadlocks() {
|
||||||
|
long[] deadlockIDs = ManagementFactory.getThreadMXBean().findDeadlockedThreads();
|
||||||
|
if (deadlockIDs == null) return 0;
|
||||||
|
return deadlockIDs.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* write deadlocked threads as to the log as warning
|
||||||
|
*/
|
||||||
|
public static void logDeadlocks() {
|
||||||
|
long[] deadlockIDs = ManagementFactory.getThreadMXBean().findDeadlockedThreads();
|
||||||
|
if (deadlockIDs == null) return;
|
||||||
|
ThreadInfo[] infos = ManagementFactory.getThreadMXBean().getThreadInfo(deadlockIDs, true, true);
|
||||||
|
for (ThreadInfo ti : infos) {
|
||||||
|
ConcurrentLog.warn("DEADLOCKREPORT", ti.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user