package com.sysinfo;
public class MonitorInfo {
/** jvm可使用内存. */
private long totalMemory; /** jvm剩余内存. */
private long freeMemory; /** jvm最大可使用内存. */
private long maxMemory; /** 操作系统. */
private String osName; /** 总的物理内存. */
private long totalMemorySize; /** 剩余的物理内存. */
private long freeMemorySize; /** 已使用的物理内存. */
private long usedMemorySize; /** 核心数. */
private int processors; public long getTotalMemory() {
return totalMemory;
} public void setTotalMemory(long totalMemory) {
this.totalMemory = totalMemory;
} public long getFreeMemory() {
return freeMemory;
} public void setFreeMemory(long freeMemory) {
this.freeMemory = freeMemory;
} public long getMaxMemory() {
return maxMemory;
} public void setMaxMemory(long maxMemory) {
this.maxMemory = maxMemory;
} public String getOsName() {
return osName;
} public void setOsName(String osName) {
this.osName = osName;
} public long getTotalMemorySize() {
return totalMemorySize;
} public void setTotalMemorySize(long totalMemorySize) {
this.totalMemorySize = totalMemorySize;
} public long getFreeMemorySize() {
return freeMemorySize;
} public void setFreeMemorySize(long freeMemorySize) {
this.freeMemorySize = freeMemorySize;
} public long getUsedMemorySize() {
return usedMemorySize;
} public void setUsedMemorySize(long usedMemorySize) {
this.usedMemorySize = usedMemorySize;
} public int getProcessors() {
return processors;
} public void setProcessors(int processors) {
this.processors = processors;
}
}
 package com.sysinfo;

 import java.lang.management.ManagementFactory;
import java.math.BigDecimal; import com.sun.management.OperatingSystemMXBean; public class MonitorService {
public MonitorInfo getMonitorInfoBean() throws Exception {
double mb = 1024 * 1024 * 1.0;
double gb = 1024 * 1024 * 1024 * 1.0; // jvm
double totalMemory = Runtime.getRuntime().totalMemory() / mb;
double freeMemory = Runtime.getRuntime().freeMemory() / mb;
double maxMemory = Runtime.getRuntime().maxMemory() / mb;
// os
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();
String osName = System.getProperty("os.name");
double totalMemorySize = osmxb.getTotalPhysicalMemorySize() / gb;
double freeMemorySize = osmxb.getFreePhysicalMemorySize() / gb;
double usedMemorySize = (osmxb.getTotalPhysicalMemorySize() - osmxb
.getFreePhysicalMemorySize()) / gb;
// MonitorInfo
MonitorInfo infoBean = new MonitorInfo();
infoBean.setTotalMemory(getIntValue(totalMemory));
infoBean.setFreeMemory(getIntValue(freeMemory));
infoBean.setMaxMemory(getIntValue(maxMemory));
infoBean.setOsName(osName);
infoBean.setTotalMemorySize(getIntValue(totalMemorySize));
infoBean.setFreeMemorySize(getIntValue(freeMemorySize));
infoBean.setUsedMemorySize(getIntValue(usedMemorySize));
infoBean.setProcessors(Runtime.getRuntime().availableProcessors());
return infoBean;
} /**
* 四舍五入取整
*
* @param d
* @return
*/
private static int getIntValue(double d) {
return new BigDecimal(d).setScale(0, BigDecimal.ROUND_HALF_UP)
.intValue();
} public static void main(String[] args) throws Exception {
MonitorService service = new MonitorService();
MonitorInfo monitorInfo = service.getMonitorInfoBean();
// System.out.println("JVM可使用内存=" + monitorInfo.getTotalMemory() +
// "MB");
// System.out.println("JVM剩余内存=" + monitorInfo.getFreeMemory() + "MB");
// System.out.println("JVM最大可使用内存=" + monitorInfo.getMaxMemory() +
// "MB"); System.out.println("操作系统=" + monitorInfo.getOsName());
System.out.println("核心数=" + monitorInfo.getProcessors());
System.out.println("总的物理内存=" + monitorInfo.getTotalMemorySize() + "GB");
System.out.println("剩余的物理内存=" + monitorInfo.getFreeMemorySize() + "GB");
System.out
.println("已使用的物理内存=" + monitorInfo.getUsedMemorySize() + "GB");
}
}

Java 获取JVM内存和物理内存信息的更多相关文章

  1. 简单说说 Java 的 JVM 内存结构

    问:简单说说 Java 的 JVM 内存结构分为哪几个部分? 答:JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分,分别解释如下.虚拟机栈:线程私有的,每个方法在执行时会创建一个 ...

  2. Java中JVM内存结构

    Java中JVM内存结构 线程共享区 方法区: 又名静态成员区域,包含整个程序的 class.static 成员等,类本身的字节码是静态的:它会被所有的线程共享和是全区级别的: 属于共享内存区域,存储 ...

  3. 【java】java获取JVM启动参数 System.getProperty

    java获取JVM启动参数 System.getProperty取 -D后的key即可 public class Test { public static void main(String[] arg ...

  4. java 利用ManagementFactory获取jvm,os的一些信息--转

    原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...

  5. Java获取虚拟机内存和操作系统内存及其线程

    为什么要获取虚拟机内存和操作系统内存呢? 虚拟机内存,这里主要指JVM.为了防止有的时候因为JVM内存问题导致服务器宕机,所以有必要监控JVM的内存.当达到一定值时,通过邮件及时通知,防止线上宕机造成 ...

  6. java中JVM内存管理(1)

    Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?  可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义  |  有哪些GC算法  以及年轻代和老年代各自特点 ...

  7. Java进阶 JVM 内存与垃圾回收篇(一)

    JVM 1. 引言 1.1 什么是JVM? 定义 Java Vritual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处 一次编译 ,到处运行 自动内存管理,垃 ...

  8. Java虚拟机JVM内存分区及代码执行机制

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt230 1.  JVM体系结构 图1 JVM体系结构    方法区:存放JVM ...

  9. java面试-JVM内存结构

    一.JVM内存结构 二.类加载(classLoader)机制 java中的ClassLoader详解 java类加载机制面试题 java类加载机制面试题 虚拟机把描述类的数据从Class文件加载到内存 ...

随机推荐

  1. 51Nod 1344 走格子 | 贪心

    Input示例 5 1 -2 -1 3 4 Output示例 2 贪心 #include <bits/stdc++.h> using namespace std; typedef long ...

  2. C11简洁之道:函数绑定

    1.  可调用对象 在C++中,有“可调用对象”这么个概念,那么什么是调用对象呢?有哪些情况?我们来看看: 函数指针: 具有operator()成员函数的类对象(仿函数): 可以被转换为函数指针的类对 ...

  3. 元类编程--__getattr__, __getattribute__

    #__getattr__, __getattribute__ #__getattr__ 就是在查找不到属性的时候调用 from datetime import date class User: def ...

  4. HDFS fs 基本命令

    https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#Overvie ...

  5. iOS多线程 iOS开发Demo(示例程序)源代码

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版)   iOS程序源代码下载链接:01.大任务.zip22 ...

  6. HDU 1284 钱币兑换问题 (dp)

    题目链接 Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法.   Input 每行只有一个正整数N,N小于327 ...

  7. 一个简单爬免费代理IP的脚本

  8. 打印 pmic register value

    打印 PMIC register value 方式有二種, 一種是使用 adb shell cat pmic register 一種是直接在 code 裡 call dump pmic registe ...

  9. monkey测试===monkeyrunner测试教程(2)

    我先引入一段代码: #test.py from com.android.monkeyrunner import MonkeyRunner as mr device=mr.waitForConnecti ...

  10. BZOJ 3771 生成函数,FFT

    Description 我们讲一个悲伤的故事. 从前有一个贫穷的樵夫在河边砍柴. 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一 ...