1 /* 2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.management; 27 28 import java.lang.management.OperatingSystemMXBean; 29 import java.lang.management.ManagementFactory; 30 import javax.management.ObjectName; 31 import sun.misc.Unsafe; 32 33 /** 34 * Implementation class for the operating system. 35 * Standard and committed hotspot-specific metrics if any. 36 * 37 * ManagementFactory.getOperatingSystemMXBean() returns an instance 38 * of this class. 39 */ 40 public class BaseOperatingSystemImpl implements OperatingSystemMXBean { 41 42 private final VMManagement jvm; 43 44 /** 45 * Constructor of BaseOperatingSystemImpl class. 46 */ 47 protected BaseOperatingSystemImpl(VMManagement vm) { 48 this.jvm = vm; 49 } 50 51 public String getName() { 52 return jvm.getOsName(); 53 } 54 55 public String getArch() { 56 return jvm.getOsArch(); 57 } 58 59 public String getVersion() { 60 return jvm.getOsVersion(); 61 } 62 63 public int getAvailableProcessors() { 64 return jvm.getAvailableProcessors(); 65 } 66 67 private static final Unsafe unsafe = Unsafe.getUnsafe(); 68 private double[] loadavg = new double[1]; 69 public double getSystemLoadAverage() { 70 if (unsafe.getLoadAverage(loadavg, 1) == 1) { 71 return loadavg[0]; 72 } else { 73 return -1.0; 74 } 75 } 76 public ObjectName getObjectName() { 77 return Util.newObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME); 78 } 79 80 }