maven 引用

  1. <dependency>
  2. <groupId>com.github.dblock</groupId>
  3. <artifactId>oshi-core</artifactId>
  4. <version>LATEST</version>
  5. </dependency>

取得 cpu信息 示例

  1. import oshi.SystemInfo;
  2. import oshi.hardware.CentralProcessor;
  3. import oshi.hardware.HardwareAbstractionLayer;
  4. import oshi.software.os.OperatingSystem;
  5.  
  6. public class ComputerIdentifier
  7. {
  8. public static String generateLicenseKey() throws Exception
  9. {
  10. SystemInfo systemInfo = new SystemInfo();
  11. OperatingSystem operatingSystem = systemInfo.getOperatingSystem();
  12. HardwareAbstractionLayer hardwareAbstractionLayer = systemInfo.getHardware();
  13. CentralProcessor centralProcessor = hardwareAbstractionLayer.getProcessor();
  14.  
  15. String vendor = operatingSystem.getManufacturer();
  16. String processorSerialNumber = centralProcessor.getSystemSerialNumber();
  17. String processorIdentifier = centralProcessor.getIdentifier();
  18. int processors = centralProcessor.getLogicalProcessorCount();
  19.  
  20. String delimiter = "#";
  21.  
  22. return vendor +
  23. delimiter +
  24. processorSerialNumber +
  25. delimiter +
  26. processorIdentifier +
  27. delimiter +
  28. processors;
  29. }
  30.  
  31. public static void main(String[] arguments) throws Exception
  32. {
  33. String identifier = generateLicenseKey();
  34. System.out.println(identifier);
  35. }
  36. }

获取jvm数据

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

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

获得jvm的堆内存代码

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

获得jvm的非堆内存代码

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

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

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

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

java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core的更多相关文章

  1. Jvm加载jar包的顺序

    使用-XX:+TraceClassPaths或者在服务器上执行jinfo时,都能得到classpath包含的jar包,例如: java.class.path = local/aaa/lib/sprin ...

  2. [置顶] JVM层对jar包字节码加密

    github https://github.com/sea-boat/ByteCodeEncrypt 需求 拿到的需求是要对某特定的jar包实现加密保护,jar包需要提供给外部使用,但核心逻辑部分需要 ...

  3. java web项目下的lib和build path 中jar包问题解惑

    一.build path&WEB-INFO/lib介绍 build path:可以说是引用: WEB-INFO/lib:可以说是固定在一个地方: eclipse编译项目的时候是根据build ...

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

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

  5. java 从jar包中读取资源文件

    在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...

  6. (转)java 从jar包中读取资源文件

    (转)java 从jar包中读取资源文件 博客分类: java   源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...

  7. [Java基础] 深入jar包:从jar包中读取资源文件

    转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...

  8. 一个tomcat下,两个系统的jar包可以相互引用。

    将道路挖占管理系统(rems)从交通设备设施系统(tms)中剥离出去以后,在本地调试的时候是在同一个Tomcat下启动的,上传文件成功. 然后部署到西安以后,分成两个tomcat以后,发现rems上传 ...

  9. Android:导入所需的系统jar包到Android studio

    1. 修改对于的AIDL文件,根据编译信息获知所需的jar包. mmm /frameworks/base/ show commands > log.txt 2>&1 out/tar ...

随机推荐

  1. Linux学习指导

    初次学习Linux,首先在虚拟机中尝试它. 虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,而Virtual Box很小巧,Windows平台下安装包在80M ...

  2. 【python】xsspider零碎知识点

    1.提取url信息 urlparse() from urlparse import urlparse url = "http://scrapy-chs.readthedocs.io/zh_C ...

  3. winform连接oracle时Oracle.DataAccess.dll版本问题 Silverlight

    1.通用TestOracle.zip部署到iis上,或直接运行程序测试当前全局程序集 protected void Button1_Click(object sender, EventArgs e) ...

  4. codeforces 758D Ability To Convert【DP】

    在N进制下给你一个数,要你转换成最小的十进制数; 状态转移方程:从前向后 dp[j]表示j位前数列的最小十进制数 dp[j]=min(dp[j],dp[i]*n+x) 程序: #include < ...

  5. KNN分类算法及python代码实现

    KNN分类算法(先验数据中就有类别之分,未知的数据会被归类为之前类别中的某一类!) 1.KNN介绍 K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法. 机器学习, ...

  6. BZOJ3091 城市旅行 LCT

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3091 题意概括 鉴于本人语文不好,此题的描述原题很清晰,废话不多,请看原题. 可怕,原题是图片,不 ...

  7. Jedis入门

    一:介绍 1.Jedis的官网 2.使用 这个可以从上面的连接进入github. https://github.com/xetorthio/jedis 3.使用方式 或者使用jar包,不过这里我使用官 ...

  8. 重温数据结构:树 及 Java 实现(转)

    转自:http://blog.csdn.net/u011240877/article/details/53193877 读完本文你将了解到: 什么是树 树的相关术语 根节点父亲节点孩子节点叶子节点如上 ...

  9. HBase 开发环境搭建(Eclipse\MyEclipse + Maven)

    写在前面的话 首先, 搭建基于MyEclipse的Hadoop开发环境 相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 比如, CentOS图形界面下如何安 ...

  10. POJ 3243 Clever Y 扩展BSGS

    http://poj.org/problem?id=3243 这道题的输入数据输入后需要将a和b都%p https://blog.csdn.net/zzkksunboy/article/details ...