1 package com.sysinfo;
2 public class MonitorInfo {
3 /** jvm可使用内存. */
4 private long totalMemory;
5
6 /** jvm剩余内存. */
7 private long freeMemory;
8
9 /** jvm最大可使用内存. */
10 private long maxMemory;
11
12 /** 操作系统. */
13 private String osName;
14
15 /** 总的物理内存. */
16 private long totalMemorySize;
17
18 /** 剩余的物理内存. */
19 private long freeMemorySize;
20
21 /** 已使用的物理内存. */
22 private long usedMemorySize;
23
24 /** 核心数. */
25 private int processors;
26
27 public long getTotalMemory() {
28 return totalMemory;
29 }
30
31 public void setTotalMemory(long totalMemory) {
32 this.totalMemory = totalMemory;
33 }
34
35 public long getFreeMemory() {
36 return freeMemory;
37 }
38
39 public void setFreeMemory(long freeMemory) {
40 this.freeMemory = freeMemory;
41 }
42
43 public long getMaxMemory() {
44 return maxMemory;
45 }
46
47 public void setMaxMemory(long maxMemory) {
48 this.maxMemory = maxMemory;
49 }
50
51 public String getOsName() {
52 return osName;
53 }
54
55 public void setOsName(String osName) {
56 this.osName = osName;
57 }
58
59 public long getTotalMemorySize() {
60 return totalMemorySize;
61 }
62
63 public void setTotalMemorySize(long totalMemorySize) {
64 this.totalMemorySize = totalMemorySize;
65 }
66
67 public long getFreeMemorySize() {
68 return freeMemorySize;
69 }
70
71 public void setFreeMemorySize(long freeMemorySize) {
72 this.freeMemorySize = freeMemorySize;
73 }
74
75 public long getUsedMemorySize() {
76 return usedMemorySize;
77 }
78
79 public void setUsedMemorySize(long usedMemorySize) {
80 this.usedMemorySize = usedMemorySize;
81 }
82
83 public int getProcessors() {
84 return processors;
85 }
86
87 public void setProcessors(int processors) {
88 this.processors = processors;
89 }
90 }
1 package com.sysinfo;
2
3 import java.lang.management.ManagementFactory;
4 import java.math.BigDecimal;
5
6 import com.sun.management.OperatingSystemMXBean;
7
8 public class MonitorService {
9 public MonitorInfo getMonitorInfoBean() throws Exception {
10 double mb = 1024 * 1024 * 1.0;
11 double gb = 1024 * 1024 * 1024 * 1.0;
12
13 // jvm
14 double totalMemory = Runtime.getRuntime().totalMemory() / mb;
15 double freeMemory = Runtime.getRuntime().freeMemory() / mb;
16 double maxMemory = Runtime.getRuntime().maxMemory() / mb;
17 // os
18 OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory
19 .getOperatingSystemMXBean();
20 String osName = System.getProperty("os.name");
21 double totalMemorySize = osmxb.getTotalPhysicalMemorySize() / gb;
22 double freeMemorySize = osmxb.getFreePhysicalMemorySize() / gb;
23 double usedMemorySize = (osmxb.getTotalPhysicalMemorySize() - osmxb
24 .getFreePhysicalMemorySize()) / gb;
25 // MonitorInfo
26 MonitorInfo infoBean = new MonitorInfo();
27 infoBean.setTotalMemory(getIntValue(totalMemory));
28 infoBean.setFreeMemory(getIntValue(freeMemory));
29 infoBean.setMaxMemory(getIntValue(maxMemory));
30 infoBean.setOsName(osName);
31 infoBean.setTotalMemorySize(getIntValue(totalMemorySize));
32 infoBean.setFreeMemorySize(getIntValue(freeMemorySize));
33 infoBean.setUsedMemorySize(getIntValue(usedMemorySize));
34 infoBean.setProcessors(Runtime.getRuntime().availableProcessors());
35 return infoBean;
36 }
37
38 /**
39 * 四舍五入取整
40 *
41 * @param d
42 * @return
43 */
44 private static int getIntValue(double d) {
45 return new BigDecimal(d).setScale(0, BigDecimal.ROUND_HALF_UP)
46 .intValue();
47 }
48
49 public static void main(String[] args) throws Exception {
50 MonitorService service = new MonitorService();
51 MonitorInfo monitorInfo = service.getMonitorInfoBean();
52 // System.out.println("JVM可使用内存=" + monitorInfo.getTotalMemory() +
53 // "MB");
54 // System.out.println("JVM剩余内存=" + monitorInfo.getFreeMemory() + "MB");
55 // System.out.println("JVM最大可使用内存=" + monitorInfo.getMaxMemory() +
56 // "MB");
57
58 System.out.println("操作系统=" + monitorInfo.getOsName());
59 System.out.println("核心数=" + monitorInfo.getProcessors());
60 System.out.println("总的物理内存=" + monitorInfo.getTotalMemorySize() + "GB");
61 System.out.println("剩余的物理内存=" + monitorInfo.getFreeMemorySize() + "GB");
62 System.out
63 .println("已使用的物理内存=" + monitorInfo.getUsedMemorySize() + "GB");
64 }
65 }