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. cocos2dx 某缩放的页面 CCTableView最后一个标签无法点中

    有一个二级界面,在ipad4下面放大到1.6倍,直接对最外层的CCLayer缩放的,里面包含有CCTableView.结果运行的时候无法选中到最后一个标签,无论总的标签是2个还是更多,单步调试,发现到 ...

  2. 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    第2课  CC2530的通用I/O端口输入和输出控制 小蜜蜂科教 / 广东职业技术学院  欧浩源 [通用I/O端口视频教程:https://v.qq.com/x/page/x0793aol7us.ht ...

  3. FastDFS介绍和配置过程

    由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构初期,使用这种简单的方式实现了静态资源的读写分离,但随着网站数据量的增加,图片服务器渐渐成 ...

  4. C++之指针,引用与数组

    引用只是对象的另一个名字,通过在变量名前面添加"&”符号来定义,而指针保存的是另一个对象的地址,它们两都提供了间接访问所服务变量的途径. 但是它们的差别还是挺大的: 先从它们的值说起 ...

  5. 安全测试===sqlmap

    本文转自:https://www.secpulse.com/archives/4213.html   鉴于很多新手对sqlmap的用法不是很熟悉 很多常用sqlmap的也不一定完全会用sqlmap 特 ...

  6. 【bzoj3786】星系探索

    ETT模版题. 真正的Eular-Tour-Tree维护的是树的欧拉序. 由于各种原因,没人知道怎么维护欧拉序,所以我写的是个假的,维护dfs序的. 本质还是用Splay维护序列. 然后因为我常数太差 ...

  7. 【hihocoder】sam-2

    原意是把sam那一堆做完…… 这题还是很sb的,$\sum{maxlen(s)-minlen(s)+1}$就是本质不同的子串数量 然后因为suffix link的性质,maxlen[fa[s]]=mi ...

  8. Pretrained models for Pytorch (Work in progress)

    The goal of this repo is: to help to reproduce research papers results (transfer learning setups for ...

  9. mybatis开启字段自动映射为java驼峰命名规则

    <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> & ...

  10. SRM 739 Div.2

    250 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostre ...