Windowsで開いているファイルディスクリプタの数を取得するにはどうすればよいですか? UNIX上Java - Windows用getOpenFileDescriptorCount
これがあります:
UnixOperatingSystemMXBean.getOpenFileDescriptorCount()
は、しかし、窓の等価があるように思えないのですか?
Windowsで開いているファイルディスクリプタの数を取得するにはどうすればよいですか? UNIX上Java - Windows用getOpenFileDescriptorCount
これがあります:
UnixOperatingSystemMXBean.getOpenFileDescriptorCount()
は、しかし、窓の等価があるように思えないのですか?
これはコメントになるだろうが、少し長めになった。
なぜ同等性の欠如があるのかについての矛盾する回答here on ServerFault: Windows Server 2008 R2 max open files limit。 TLDR:Windowsは利用可能なハードウェアとWindowsの制限が32対64ビットの実装(MS Technet Blog Post - Pushing the Limits of Windows: Handles)によって制限されています。確かに、これは古い情報です。
しかし! com.sun.management
packageのJavaDocsに注意する場合は、機能を提供するためにに拡張されるUnixOperatingSystemMXBean
のWindows版が目立たないことに注意してください。 UnixOperatingSystemMXBean
でさえ、getMaxFileDescriptorCount()
とgetOpenFileDescriptorCount()
を提供するためにのみ存在するので、Windowsに同じ概念があるとは思われません。
編集:
私は一種の私は微調整このオフを示し、ちょっといいプログラムを見つけました。 Linuxの 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();
}
}
}
:Windowsでは
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)