maven 引用

<dependency><groupId>com.github.dblock</groupId><artifactId>oshi-core</artifactId><version>LATEST</version>
</dependency>

取得 cpu信息 示例

import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.HardwareAbstractionLayer;
import oshi.software.os.OperatingSystem;public class ComputerIdentifier
{public static String generateLicenseKey() throws Exception{SystemInfo systemInfo = new SystemInfo();OperatingSystem operatingSystem = systemInfo.getOperatingSystem();HardwareAbstractionLayer hardwareAbstractionLayer = systemInfo.getHardware();CentralProcessor centralProcessor = hardwareAbstractionLayer.getProcessor();String vendor = operatingSystem.getManufacturer();String processorSerialNumber = centralProcessor.getSystemSerialNumber();String processorIdentifier = centralProcessor.getIdentifier();int processors = centralProcessor.getLogicalProcessorCount();String delimiter = "#";return vendor +delimiter +processorSerialNumber +delimiter +processorIdentifier +delimiter +processors;}public static void main(String[] arguments) throws Exception{String identifier = generateLicenseKey();System.out.println(identifier);}
}

获取jvm数据

jvm数据是监控应用很重要的一系列参数,一般本地开发的时候可以通过jconsole来连到对应的进程上面,查看相关指标数据,但是在线上环境就不适合通过jconsole来查看了, 所以我们现在使用通过java代码来获得数据,然后上报出去,然后在外部通过展示。

那么如何通过java代码来得到这些参数呢?

获得jvm的堆内存代码

MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
System.out.println("jvm.heap.init is " + (heapMemoryUsage.getInit()));
System.out.println("jvm.heap.used is " + (heapMemoryUsage.getUsed())); System.out.println("jvm.heap.committed is " + (heapMemoryUsage.getCommitted())); System.out.println("jvm.heap.max is " + (heapMemoryUsage.getMax()));

获得jvm的非堆内存代码

MemoryUsage nonHeapMemoryUsage = ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage();
System.out.println("jvm.nonheap.init is " + (nonHeapMemoryUsage.getInit()));
System.out.println("jvm.nonheap.used is " + (nonHeapMemoryUsage.getUsed())); System.out.println("jvm.nonheap.committed is " + (nonHeapMemoryUsage.getCommitted())); System.out.println("jvm.nonheap.max is " + (nonHeapMemoryUsage.getMax()));

上面的方法只能得到jvm的堆和非堆的整体数据,一般都知道堆和非堆里面都几个不同的区,用来做不同功能,那么如何得到不同区的数据呢?不多说,上代码

for (MemoryPoolMXBean pool : ManagementFactory.getMemoryPoolMXBeans()) {
final String kind = pool.getType() == MemoryType.HEAP ? "heap" : "nonheap"; final MemoryUsage usage = pool.getUsage(); System.out.println("kind is " + kind + ", pool name is " + pool.getName() + ", jvm." + pool.getName() + ".init is " + usage.getInit()); System.out.println("kind is " + kind + ", pool name is " + pool.getName() + ", jvm." + pool.getName() + ".used is " + usage.getUsed()); System.out.println("kind is " + kind + ", pool name is " + pool.getName() + ", jvm." + pool.getName()+ ".committed is " + usage.getCommitted()); System.out.println("kind is " + kind + ", pool name is " + pool.getName() + ", jvm." + pool.getName() + ".max is " + usage.getMax()); }

这样就可以得到各种区的具体参数。

java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core相关推荐

  1. Java通过JNI调用C++动态链接库dll,并打在jar包内 ——JNA-JNI(一)

    Java通过JNI调用C++动态链接库dll,并打在jar包内--JNA-JNI(一) 系列文章: Java通过JNI调用C++动态链接库dll,并打在jar包内 --JNA-JNI(一) Java使 ...

  2. Java通用权限系统视频(2021年高含金量版)

    来源: 来自网络,如侵权请告知博主删除????. 仅学习使用,请勿用于其他- 大家好,我是肉哥,最近有小伙伴联系我需要通用权限系统相关资源,分享给大家! 目录 01-课程介绍.mp4: U, ?9 r ...

  3. java学生签到系统视频教程_Java web学生信息、选课、签到考勤、成绩管理系统附带完整源码及视频开发教程...

    四个阶段的Java web学生信息系统视频教程终于录制完成了,系统用到的知识点有:jsp+servlet+mysql+jquery+ajax,前端采用的是当下最流行的easyui管理框架,全部采用面向 ...

  4. linux java jar包项目如何安装在win系统 设置开机自启等配置 - jar包配置不用改

    大家都知道  linux 是没有c盘或者d盘 我们部署linux项目的时候  , java 上传的文件都是在当前项目的目录下, 我们需要把项目部署到win系统的时候 在不改其jar包的配置下,在指定盘 ...

  5. Java-查看JVM从哪个JAR包中加载指定类

    背景 方式一 方式二 背景 有的时候,我们经常会碰到java.lang.NoSuchMethodError的错误信息. 究其根源,是由于JVM的 全盘负责委托机制导致的. 关于 全盘负责委托机制 ,请 ...

  6. Java后台代码word转pdf文件下载(类库参考)附jar包

    word文件中需要转为pdf文件,word中的空格部分被程序后台动态填充,例如: 上图中带有[标]字样的位置,可以被替换为动态数据,最后被导出为pdf文件. 贴一下java工具类代码 所有过程按照下面 ...

  7. 怎么导出ij里面的java文件_Java應用系列:命令行生成jar包(附IJ Idea導出jar方法)...

    jar包 JAR(Java Archive,Java 歸檔文件)是與平台無關的壓縮文件,通常是用於將多個class文件組合成一個,.當創建jar包的時候,如果程序中有main入口函數,同時manife ...

  8. java和opencv配置_Java——OpenCVWindows配置和项目中jar包的简单配置

    1. 安装OpenCV 1.1 下载相应的OpenCV版本,解压 1.2 将 openCV的dll文件(D:\InstallPackages\OpenCV\opencv\build\java\x64) ...

  9. [java] DOS编译 .java 文件得到 .class 文件 并执行 以及使用外部 .jar包 时的命令...

    当写一个java文件后,在DOS中进行编译与执行时,如果没有引入外来的包,那情况很简单 例如: public class hello_world {public static void main(St ...

最新文章

  1. python判断字母左右两边的大写字母有_python习题,,1.26个字母大小写
  2. oracle存储过程关键字有哪些,ORACLESTREAMS存储过程中的一些参数有哪些?
  3. gcd(欧几里得算法)
  4. BUAA 436 孟竹的复习计划(二维树状数组)
  5. WampServer + phpcms 开发中,浏览器 localhost 出现 Cannot to connect to mySQL server 的原因分析和解决办法?
  6. STM32 RCC时钟配置
  7. X86汇编语言从实模式到保护模式14:用户程序编程接口及其实现
  8. EfficientDet训练自己的物体检测数据集
  9. mysql 自动当前时间_Mysql 自动获取当前时间
  10. MyBatis使用Mapper动态代理开发Dao层
  11. 一洽客服客户试用转化率100%
  12. 说说基因组的垃圾DNA-Transposable elements
  13. Excel计算函数(计算机二级)
  14. iOS之获取手机DeviceToken,以及苹果测试推送工具Easy APNs Provider
  15. %d,%c,%s,%x各代表什么
  16. 在PPT中看不到边框
  17. dos命令为java程序赋值_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是() (5.0分)_学小易找答案...
  18. 麻省理工学院智能探索计划,旨在探索人类智力基础
  19. 〖Python零基础入门篇㊼〗- 包与模块
  20. 大众点评数据信息获取——字体反爬

热门文章

  1. Winrar从命令行查看压缩文件内容
  2. OpenCV About 页面翻译
  3. 一些java基本程序图解1
  4. 数据库存储引擎学习总结
  5. WPF代码模板-布局部分
  6. Promise.all 的原理
  7. Windows Server 2012 RS 配置IIS8.0+发布网站
  8. Django—模板渲染
  9. BZOJ1787: [Ahoi2008]Meet 紧急集合
  10. jfinal配置rails的数据表