OperatingSystemMXBean osmb = (OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();
// 内存
String memory = osmb.getTotalPhysicalMemorySize()
+ "B";
System.out.println(memory);
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
Object attribute = null;
try {
attribute = mBeanServer.getAttribute(new ObjectName("java.lang","type","OperatingSystem"), "TotalPhysicalMemorySize");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Total memory: "+ attribute.toString() +"B");
System.out.println("Total memory: "+ Integer.parseInt(attribute.toString()) +"MB");
System.out.println("Total memory: "+ Long.parseLong(attribute.toString())/ 1024L/1024L/1024L +"G");
错误提示:
4294967295B
Total memory: 4294967295B
Exception in thread "main" java.lang.NumberFormatException: For input string: "4294967295"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
at java.lang.Integer.parseInt(Integer.java:499)
at com.travelsky.angel.client.base.util.LocIpMacCompName.main(LocIpMacCompName.java:174)
错误关键字 java.lang.NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有 For input string: "
原因分析:
转换成数字类型时出错了。
<pre name="code" class="java"><strong><span style="font-size:18px;">解决方案:</span></strong>
由于int 类型最大范围是-2147483648-2147483647 ,超出他的范围所以会犯错,直接拿long型转就好了。
有时可能也会出现空格的情况,trim()掉就可以了。