在java代码中获取JVM参数的方法

实例如下:

MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean();
  MemoryUsage usage = memorymbean.getHeapMemoryUsage();
  System.out.println("INIT HEAP: " + usage.getInit());
  System.out.println("MAX HEAP: " + usage.getMax());
  System.out.println("USE HEAP: " + usage.getUsed());
  System.out.println("\nFull Information:");
  System.out.println("Heap Memory Usage: "
  + memorymbean.getHeapMemoryUsage());
  System.out.println("Non-Heap Memory Usage: "
  + memorymbean.getNonHeapMemoryUsage());  

  List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
  System.out.println("===================java options=============== ");
  System.out.println(inputArguments); 

  System.out.println("=======================通过java来获取相关系统状态============================ ");
  int i = (int)Runtime.getRuntime().totalMemory()/1024;//Java 虚拟机中的内存总量,以字节为单位
  System.out.println("总的内存量 i is "+i);
  int j = (int)Runtime.getRuntime().freeMemory()/1024;//Java 虚拟机中的空闲内存量
  System.out.println("空闲内存量 j is "+j);
  System.out.println("最大内存量 is "+Runtime.getRuntime().maxMemory()/1024); 

  System.out.println("=======================OperatingSystemMXBean============================ ");
  OperatingSystemMXBean osm = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
//  System.out.println(osm.getFreeSwapSpaceSize()/1024);
//  System.out.println(osm.getFreePhysicalMemorySize()/1024);
//  System.out.println(osm.getTotalPhysicalMemorySize()/1024); 

  //获取操作系统相关信息
  System.out.println("osm.getArch() "+osm.getArch());
  System.out.println("osm.getAvailableProcessors() "+osm.getAvailableProcessors());
  //System.out.println("osm.getCommittedVirtualMemorySize() "+osm.getCommittedVirtualMemorySize());
  System.out.println("osm.getName() "+osm.getName());
  //System.out.println("osm.getProcessCpuTime() "+osm.getProcessCpuTime());
  System.out.println("osm.getVersion() "+osm.getVersion());
  //获取整个虚拟机内存使用情况
  System.out.println("=======================MemoryMXBean============================ ");
  MemoryMXBean mm=(MemoryMXBean)ManagementFactory.getMemoryMXBean();
  System.out.println("getHeapMemoryUsage "+mm.getHeapMemoryUsage());
  System.out.println("getNonHeapMemoryUsage "+mm.getNonHeapMemoryUsage());
  //获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况
  System.out.println("=======================ThreadMXBean============================ ");
  ThreadMXBean tm=(ThreadMXBean)ManagementFactory.getThreadMXBean();
  System.out.println("getThreadCount "+tm.getThreadCount());
  System.out.println("getPeakThreadCount "+tm.getPeakThreadCount());
  System.out.println("getCurrentThreadCpuTime "+tm.getCurrentThreadCpuTime());
  System.out.println("getDaemonThreadCount "+tm.getDaemonThreadCount());
  System.out.println("getCurrentThreadUserTime "+tm.getCurrentThreadUserTime()); 

  //当前编译器情况
  System.out.println("=======================CompilationMXBean============================ ");
  CompilationMXBean gm=(CompilationMXBean)ManagementFactory.getCompilationMXBean();
  System.out.println("getName "+gm.getName());
  System.out.println("getTotalCompilationTime "+gm.getTotalCompilationTime()); 

  //获取多个内存池的使用情况
  System.out.println("=======================MemoryPoolMXBean============================ ");
  List<MemoryPoolMXBean> mpmList=ManagementFactory.getMemoryPoolMXBeans();
  for(MemoryPoolMXBean mpm:mpmList){
    System.out.println("getUsage "+mpm.getUsage());
    System.out.println("getMemoryManagerNames "+mpm.getMemoryManagerNames().toString());
  }
  //获取GC的次数以及花费时间之类的信息
  System.out.println("=======================MemoryPoolMXBean============================ ");
  List<GarbageCollectorMXBean> gcmList=ManagementFactory.getGarbageCollectorMXBeans();
  for(GarbageCollectorMXBean gcm:gcmList){
    System.out.println("getName "+gcm.getName());
    System.out.println("getMemoryPoolNames "+gcm.getMemoryPoolNames());
  }
  //获取运行时信息
  System.out.println("=======================RuntimeMXBean============================ ");
  RuntimeMXBean rmb=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean();
  System.out.println("getClassPath "+rmb.getClassPath());
  System.out.println("getLibraryPath "+rmb.getLibraryPath());
  System.out.println("getVmVersion "+rmb.getVmVersion()); 

以上这篇在java代码中获取JVM参数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 从JVM的内存管理角度分析Java的GC垃圾回收机制

    一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能.本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能.     GC的基本原理     Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放.     对于程序员来说,分配对象使用

  • 快速理解Java垃圾回收和jvm中的stw

    Java中Stop-The-World机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外).Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互:这些现象多半是由于gc引起. GC时的Stop the World(STW)是大家最大的敌人.但可能很多人还不清楚,除了GC,JVM下还会发生停顿现象. JVM里有一条特殊的线程--VM Threads,专门用来执行一些特殊的VM Operation

  • 从JVM分析Java的类的加载和卸载机制

    类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构. 加载.class文件的方式: 1.从本地系统中直接加载 2.通过网络下载.class文件 3.从zip,jar等归档文件中加载.class文件 4.从专有数据库中提取.class文件 5.将Java源文件动态编译为.class文件 类的加载的最终产品是位于堆区中的Class对象. Class对象封装了类在

  • 在java代码中获取JVM参数的方法

    实例如下: MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean(); MemoryUsage usage = memorymbean.getHeapMemoryUsage(); System.out.println("INIT HEAP: " + usage.getInit()); System.out.println("MAX HEAP: " + usage.getMax()); System.

  • Java杂谈之如何消除代码中一大串参数列表

    目录 方法为何要有参数? 长参数列表的问题 解决方案 聚沙成塔 动静分离 告别标记 总结 有经验的程序员应该都见过,一个方法坐拥几十上百个参数. 方法为何要有参数? 因为不同方法间需共享信息. 但方法间共享信息的方式不止一种,除了参数列表,还有全局变量.但全局变量总能带来意外惊喜,所以,取消全局变量也是各大语言的趋势. 但方法之间还是要传递信息的,不能用全局变量,于是参数就成了唯一选择,于是,只要你想到有什么信息要传给一个方法,就会直接它加到参数列表中,参数列表也越来越长. 长参数列表的问题 参

  • 在Java代码中解析html,获取其中的值方法

    有时我们获取到了页面需要在Java代码中进行解析,获取html中的数据,Jsoup是一个很方便的工具. 一.什么是Jsoup? 官网网站:http://jsoup.org/ 可在官网下载对应的jar 通俗的将Jsoup就是一个解析网页的东西 二.示例 1.页面,通过查询获取到了一些数据: 2.源码,这是一个table,class="list",通过这些来唯一标识它 3.代码,将html以String的形式传进来,使用Jsoup进行解析: import org.jsoup.Jsoup;

  • 教你在JNA中将本地方法映射到JAVA代码中的示例

    目录 简介 Library Mapping Function Mapping Invocation Mapping 防止VM崩溃 性能考虑 总结 简介 不管是JNI还是JNA,最终调用的都是native的方法,但是对于JAVA程序来说,一定需要一个调用native方法的入口,也就是说我们需要在JAVA方法中定义需要调用的native方法. 对于JNI来说,我们可以使用native关键字来定义本地方法.那么在JNA中有那些在JAVA代码中定义本地方法的方式呢? Library Mapping 要想

  • 基于JAVA文件中获取路径及WEB应用程序获取路径的方法

    1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了test.txt文件的绝对路径: http://www.sun.com/index.htm也代表了一个URL绝对路径: `相对路径`:相对与某个基准目录的路径,包含Web的相对路径(HTML中的相对目录). 例如: 在Servlet中,"/"代表Web应用的根目录,和物理路径的相对表示. 例如: "./"代表当前目录,&quo

  • Java代码中如何去掉烦人的“!=null”

    问题 为了避免空指针调用,我们经常会看到这样的语句 ...if (someobject != null) { someobject.doCalc();}... 最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢? 精华回答: 这是初.中级程序猿经常会遇到的问题.他们总喜欢在方法中返回null,因此,在调用这些方法时,也不得不去判空.另外,也许受此习惯影响,他们总潜意识地认为,所有的返回都是不可信任的,为了保护自己程序,就加了大量的判空. 吐槽完毕,回到这个题目本

  • Java Spring Controller 获取请求参数的几种方法详解

    Java Spring Controller 获取请求参数的几种方法  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/x-www-form-urlencoded",可用post提交 url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&password=1

  • 基于express中路由规则及获取请求参数的方法

    express中常见的路由规则 主要使用的路由规则是get和post两种,即 var express = require('express'); var app = express(); app.get(); // get和post两种请求方式 app.post(); app.get()和app.post()的第一个参数为请求路径,第二个参数为处理请求的回调函数:回调函数有两个参数,分别为req和res,代表请求信息和响应信息. 获取请求路径和请求体中的各种参数 路径请求及对应获取请求路径的形式

  • js中获取URL参数的共用方法getRequest()方法实例详解

    下面通过一段代码给大家介绍js中获取URL参数的共用方法getRequest()方法,具体代码如下所示: getRequest : function() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&am

  • 如何优雅的替换掉Java代码中的if else

    场景 平时我们在写代码时,需要针对不同情况处理不同的业务逻辑,用得最多的就是if和else. 但是如果情况太多,就会出现一大堆的"if else",这就是为什么很多遗留系统中,一个函数可能出现上千行的代码.当然你说可以通过抽取方法或者类来实现,每一个情况交给一个方法或者对应一个类来处理,但是这样做只是看起来代码整洁了一些,还是有大量的"if else",后面有新的逻辑时,又要添加更多的"if else",没有从根本上解决问题. 举个例子,短信发送

随机推荐