如何在Windows下获取打开文件描述符的数量?
在Unix系统中可以使用以下命令:
但是似乎Windows没有相应的功能?
在Unix系统中可以使用以下命令:
UnixOperatingSystemMXBean.getOpenFileDescriptorCount()
但是似乎Windows没有相应的功能?
UnixOperatingSystemMXBean.getOpenFileDescriptorCount()
但是!如果您查看com.sun.management
包的JavaDocs,您当然会注意到缺少Windows版本的UnixOperatingSystemMXBean
,该版本将扩展OperatingSystemMXBean以提供功能。即使UnixOperatingSystemMXBean
只存在于提供getMaxFileDescriptorCount()
和getOpenFileDescriptorCount()
,因此似乎不太可能Windows具有相同的概念。
编辑:
我找到了一个很好的小程序,可以展示这一点,我进行了微调。 Descriptors.java
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
class Descriptors {
public static void main(String [ ] args) {
System.out.println(osMxBean.getClass().getName());
OperatingSystemMXBean osMxBean = ManagementFactory.getOperatingSystemMXBean();
try {
Method getMaxFileDescriptorCountField = osMxBean.getClass().getDeclaredMethod("getMaxFileDescriptorCount");
Method getOpenFileDescriptorCountField = osMxBean.getClass().getDeclaredMethod("getOpenFileDescriptorCount");
getMaxFileDescriptorCountField.setAccessible(true);
getOpenFileDescriptorCountField.setAccessible(true);
System.out.println(getOpenFileDescriptorCountField.invoke(osMxBean) + "/" + getMaxFileDescriptorCountField.invoke(osMxBean));
} catch (Exception e) {
e.printStackTrace();
}
}
}
com.sun.management.UnixOperatingSystem
11/2048
sun.management.OperatingSystemImpl
java.lang.NoSuchMethodException:
sun.management.OperatingSystemImpl.getMaxFileDescriptorCount()
at java.lang.Class.getDeclaredMethod(Unknown Source)
at Descriptors.main(Descriptors.java:10)