/** * Returns the appropriate {@link SystemInfo} implementation based on the platform/operating system the JVM is * running on. * * @return a {@link NativeSystemInfo} implementation or a {@link JavaSystemInfo} if the native libraries are * {@link #isNativeSystemInfoAvailable() not available for the platform} or have been * {@link #disableNativeSystemInfo() disabled}. */ public static synchronized SystemInfo createSystemInfo() { if (cachedSystemInfo == null) { initialize(); // make sure we've loaded the native libraries, if appropriate SystemInfo nativePlatform = null; if (!isNativeSystemInfoDisabled() && isNativeSystemInfoAvailable()) { // we could use SIGAR here, but this should be enough if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) { nativePlatform = new WindowsNativeSystemInfo(); } else { // we either don't know what OS it is or we don't have a specific native subclass for it; // but we know we have a native library for it! so just create the generic NativePlatform to represent it. nativePlatform = new NativeSystemInfo(); } } if (nativePlatform == null) { nativePlatform = javaSystemInfo; } cachedSystemInfo = nativePlatform; } return cachedSystemInfo; }
/** * Returns the appropriate {@link SystemInfo} implementation based on the platform/operating system the JVM is * running on. * * @return a {@link NativeSystemInfo} implementation or a {@link JavaSystemInfo} if the native libraries are * {@link #isNativeSystemInfoAvailable() not available for the platform} or have been * {@link #disableNativeSystemInfo() disabled}. */ public static synchronized SystemInfo createSystemInfo() { if (cachedSystemInfo == null) { initialize(); // make sure we've loaded the native libraries, if appropriate SystemInfo nativePlatform = null; if (!isNativeSystemInfoDisabled() && isNativeSystemInfoAvailable()) { // we could use SIGAR here, but this should be enough if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) { nativePlatform = new WindowsNativeSystemInfo(); } else { // we either don't know what OS it is or we don't have a specific native subclass for it; // but we know we have a native library for it! so just create the generic NativePlatform to represent it. nativePlatform = new NativeSystemInfo(); } } if (nativePlatform == null) { nativePlatform = javaSystemInfo; } cachedSystemInfo = nativePlatform; } return cachedSystemInfo; }