-
-
Notifications
You must be signed in to change notification settings - Fork 44
/
EnvironmentInfo.java
34 lines (29 loc) · 1.34 KB
/
EnvironmentInfo.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package nallar.tickthreading.util;
import com.sun.management.UnixOperatingSystemMXBean;
import nallar.tickthreading.Log;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
public class EnvironmentInfo {
public static String getJavaVersion() {
return ManagementFactory.getRuntimeMXBean().getSpecVersion();
}
public static String getOpenFileHandles() {
OperatingSystemMXBean osMxBean = ManagementFactory.getOperatingSystemMXBean();
if (osMxBean instanceof UnixOperatingSystemMXBean) {
UnixOperatingSystemMXBean unixOsMxBean = (UnixOperatingSystemMXBean) osMxBean;
return unixOsMxBean.getOpenFileDescriptorCount() + " / " + unixOsMxBean.getMaxFileDescriptorCount();
}
return "unknown";
}
public static void checkOpenFileHandles() {
OperatingSystemMXBean osMxBean = ManagementFactory.getOperatingSystemMXBean();
if (osMxBean instanceof UnixOperatingSystemMXBean) {
UnixOperatingSystemMXBean unixOsMxBean = (UnixOperatingSystemMXBean) osMxBean;
long used = unixOsMxBean.getOpenFileDescriptorCount();
long available = unixOsMxBean.getMaxFileDescriptorCount();
if (used != 0 && available != 0 && (used > (available * 17) / 20 || (available - used) < 3)) {
Log.severe("Used >= 85% of available file handles: " + getOpenFileHandles());
}
}
}
}