Java 获取JVM内存和物理内存信息
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内存和物理内存信息的更多相关文章
- 简单说说 Java 的 JVM 内存结构
问:简单说说 Java 的 JVM 内存结构分为哪几个部分? 答:JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分,分别解释如下.虚拟机栈:线程私有的,每个方法在执行时会创建一个 ...
- Java中JVM内存结构
Java中JVM内存结构 线程共享区 方法区: 又名静态成员区域,包含整个程序的 class.static 成员等,类本身的字节码是静态的:它会被所有的线程共享和是全区级别的: 属于共享内存区域,存储 ...
- 【java】java获取JVM启动参数 System.getProperty
java获取JVM启动参数 System.getProperty取 -D后的key即可 public class Test { public static void main(String[] arg ...
- java 利用ManagementFactory获取jvm,os的一些信息--转
原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...
- Java获取虚拟机内存和操作系统内存及其线程
为什么要获取虚拟机内存和操作系统内存呢? 虚拟机内存,这里主要指JVM.为了防止有的时候因为JVM内存问题导致服务器宕机,所以有必要监控JVM的内存.当达到一定值时,通过邮件及时通知,防止线上宕机造成 ...
- java中JVM内存管理(1)
Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗? 可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点 ...
- Java进阶 JVM 内存与垃圾回收篇(一)
JVM 1. 引言 1.1 什么是JVM? 定义 Java Vritual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处 一次编译 ,到处运行 自动内存管理,垃 ...
- Java虚拟机JVM内存分区及代码执行机制
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt230 1. JVM体系结构 图1 JVM体系结构 方法区:存放JVM ...
- java面试-JVM内存结构
一.JVM内存结构 二.类加载(classLoader)机制 java中的ClassLoader详解 java类加载机制面试题 java类加载机制面试题 虚拟机把描述类的数据从Class文件加载到内存 ...
随机推荐
- 数据结构:hash_map
在C++11以上的开发环境中,请直接把map替换成unordered_map,不要使用hash_map 之前我们专门有一篇介绍哈希表,多维哈希表的博文,当时就是以map举例子,然后说了一句把map替换 ...
- Robot Framework Chrome
1. 下载对应版本的chromedriver, 好像都是windows32位的,不过没关系,可以用即可. 2. 将chromedriver放入到chrome的安装路径下,然后将chromrdriver ...
- 大聊Python----协程
协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来 ...
- 变量对象vs活动对象
这是我见过描述的最为详尽的关于变量对象.活动对象以及闭包的解析,来自知乎,感谢答主: 作者:闭家锁链接:https://www.zhihu.com/question/36393048/answer/7 ...
- mave的依赖范围
compile(编译范围) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范 围.编译范围依赖在所有的classpath中可用,同时它们也会被打包. provided(已提供 ...
- Python第三方库matplotlib(2D绘图库)入门与进阶
Matplotlib 一 简介: 二 相关文档: 三 入门与进阶案例 1- 简单图形绘制 2- figure的简单使用 3- 设置坐标轴 4- 设置legend图例 5- 添加注解和绘制点以及在图形上 ...
- HTTP响应码摘自apach官网
HTTP状态列表 响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接 ...
- linux===Ubuntu 上安装 Node.js
https://www.cnblogs.com/andfly/p/6681487.html
- linux子系统的初始化_subsys_initcall()【转】
转自:http://my.oschina.net/u/572632/blog/305492 目录[-] 概述 section的声明 注册 调用 IN BUILDING 概述 内核选项的解析完成之后,各 ...
- free函数在操作系统内存中的实现【转】
转自:http://www.2cto.com/kf/201210/160985.html 我一次性malloc十个单位节点的内存空间出来赋值给L, 现在我想一次性删除从第3个到第6个节点,我是这么做的 ...