java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core
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相关推荐
- Java通过JNI调用C++动态链接库dll,并打在jar包内 ——JNA-JNI(一)
Java通过JNI调用C++动态链接库dll,并打在jar包内--JNA-JNI(一) 系列文章: Java通过JNI调用C++动态链接库dll,并打在jar包内 --JNA-JNI(一) Java使 ...
- Java通用权限系统视频(2021年高含金量版)
来源: 来自网络,如侵权请告知博主删除????. 仅学习使用,请勿用于其他- 大家好,我是肉哥,最近有小伙伴联系我需要通用权限系统相关资源,分享给大家! 目录 01-课程介绍.mp4: U, ?9 r ...
- java学生签到系统视频教程_Java web学生信息、选课、签到考勤、成绩管理系统附带完整源码及视频开发教程...
四个阶段的Java web学生信息系统视频教程终于录制完成了,系统用到的知识点有:jsp+servlet+mysql+jquery+ajax,前端采用的是当下最流行的easyui管理框架,全部采用面向 ...
- linux java jar包项目如何安装在win系统 设置开机自启等配置 - jar包配置不用改
大家都知道 linux 是没有c盘或者d盘 我们部署linux项目的时候 , java 上传的文件都是在当前项目的目录下, 我们需要把项目部署到win系统的时候 在不改其jar包的配置下,在指定盘 ...
- Java-查看JVM从哪个JAR包中加载指定类
背景 方式一 方式二 背景 有的时候,我们经常会碰到java.lang.NoSuchMethodError的错误信息. 究其根源,是由于JVM的 全盘负责委托机制导致的. 关于 全盘负责委托机制 ,请 ...
- Java后台代码word转pdf文件下载(类库参考)附jar包
word文件中需要转为pdf文件,word中的空格部分被程序后台动态填充,例如: 上图中带有[标]字样的位置,可以被替换为动态数据,最后被导出为pdf文件. 贴一下java工具类代码 所有过程按照下面 ...
- 怎么导出ij里面的java文件_Java應用系列:命令行生成jar包(附IJ Idea導出jar方法)...
jar包 JAR(Java Archive,Java 歸檔文件)是與平台無關的壓縮文件,通常是用於將多個class文件組合成一個,.當創建jar包的時候,如果程序中有main入口函數,同時manife ...
- java和opencv配置_Java——OpenCVWindows配置和项目中jar包的简单配置
1. 安装OpenCV 1.1 下载相应的OpenCV版本,解压 1.2 将 openCV的dll文件(D:\InstallPackages\OpenCV\opencv\build\java\x64) ...
- [java] DOS编译 .java 文件得到 .class 文件 并执行 以及使用外部 .jar包 时的命令...
当写一个java文件后,在DOS中进行编译与执行时,如果没有引入外来的包,那情况很简单 例如: public class hello_world {public static void main(St ...
最新文章
- python判断字母左右两边的大写字母有_python习题,,1.26个字母大小写
- oracle存储过程关键字有哪些,ORACLESTREAMS存储过程中的一些参数有哪些?
- gcd(欧几里得算法)
- BUAA 436 孟竹的复习计划(二维树状数组)
- WampServer + phpcms 开发中,浏览器 localhost 出现 Cannot to connect to mySQL server 的原因分析和解决办法?
- STM32 RCC时钟配置
- X86汇编语言从实模式到保护模式14:用户程序编程接口及其实现
- EfficientDet训练自己的物体检测数据集
- mysql 自动当前时间_Mysql 自动获取当前时间
- MyBatis使用Mapper动态代理开发Dao层
- 一洽客服客户试用转化率100%
- 说说基因组的垃圾DNA-Transposable elements
- Excel计算函数(计算机二级)
- iOS之获取手机DeviceToken,以及苹果测试推送工具Easy APNs Provider
- %d,%c,%s,%x各代表什么
- 在PPT中看不到边框
- dos命令为java程序赋值_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是() (5.0分)_学小易找答案...
- 麻省理工学院智能探索计划,旨在探索人类智力基础
- 〖Python零基础入门篇㊼〗- 包与模块
- 大众点评数据信息获取——字体反爬