jinfo介绍
1. jinfo
1.1 简介
jinfo用于打印java的配置信息,这些配置信息包括:
- java system properties
- jvm命令行参数
通过查看这些配置信息,可以了解java进程的运行时环境,例如加载类的顺序、jvm配置情况等。
1.2 使用
- jinfo pid . 即不加参数,jinfo后面直接跟进程id。会同时打印jvm命令行参数和java system properties
- jinfo -flags pid . 只打印jvm命令行参数
- jinfo -sysprops pid . 只打印java system properties
举例来说,我们运行如下java程序
java -jar -Dtest test-1.0-SNAPSHOT.jar &
其中配置了一个jvm命令行参数-Dtest,注意jvm命令行参数要再jar包前面,否则就成为了main函数的参数了。 使用
jps -lm
查看进程id,这里得到的进程id是3107778,使用
jinfo 3107778
打印进程的配置信息,包括jvm参数和java system properties。打印结果大致如下:
Attaching to process ID 3107778, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11
Java System Properties: // 第一部分: Java System Properties
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.131-b11
test = // 重点
....// 忽略中间的system properties
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.cpu.isalist =
VM Flags: // 第二部分:jvm 参数
Non-default VM flags: -XX:CICompilerCount=15 -XX:InitialHeapSize=2147483648 -XX:MaxHeapSize=32210157568 -XX:MaxNewSize=10736369664 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=715653120 -XX:OldSize=1431830528 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
Command line: -Dtest // jvm命令行参数
2. java system properties
在平常的一些项目中,我们会使用Properties来保存一些配置信息。同样在java本身也会用Properties来保存java平台的配置信息,这个就是java system properties。System properties主要包含了current user、the current version of the Java runtime、jvm加载的类的路径等信息。
这个Properties就在java.lang.System类中。可以通过查看代码看到System中有个props的属性,这个便是刚才提到的java system properties:
public final class System {
//....
/**
* System properties. The following properties are guaranteed to be defined:
* <dl>
* <dt>java.version <dd>Java version number
* <dt>java.vendor <dd>Java vendor specific string
* <dt>java.vendor.url <dd>Java vendor URL
* <dt>java.home <dd>Java installation directory
* <dt>java.class.version <dd>Java class version number
* <dt>java.class.path <dd>Java classpath
* <dt>os.name <dd>Operating System Name
* <dt>os.arch <dd>Operating System Architecture
* <dt>os.version <dd>Operating System Version
* <dt>file.separator <dd>File separator ("/" on Unix)
* <dt>path.separator <dd>Path separator (":" on Unix)
* <dt>line.separator <dd>Line separator ("\n" on Unix)
* <dt>user.name <dd>User account name
* <dt>user.home <dd>User home directory
* <dt>user.dir <dd>User's current working directory
* </dl>
*/
private static Properties props;
//...
}
System提供了相应的get/set方法来修改该类,但是使用set修改System properties被视为是危险的动作,而且会有一些安全限制。那么如果我们想在java启动的时候通过jvm命令行参数来配置system properties应该怎么做呢?答案是使用类似上面启动java程序的参数,即
-Dkey=value
这样的格式。如果不写=value,则得到的为空字符串。例如上面提到的启动java程序,配置了-Dtest:
java -jar -Dtest test-1.0-SNAPSHOT.jar &
在其jinfo的输出中,我们可以看到jvm命令行参数是-Dtest,同时在system properties中存在“test=”的properties项。
假设上述程序main函数如下:
public static void main(String[] args) throws Exception {
String s = System.getProperties().getProperty("test");
if (s == null) {
System.out.println("null");
}
System.out.println("DDD " + s);
}
则得到s为"",最终打印结果是,如果配置启动命令为
java -jar -Dtest=aaa test-1.0-SNAPSHOT.jar &
则上述代码运行结果为DDD aaa。 如果value有空格,则需要加引号(e.g. -Dfoo="foo bar")
3. 参考
- jinfo man page
- https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
- https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
jinfo介绍的更多相关文章
- JVM监控工具:jps、jstat、jinfo、jmap、jhat、jstack使用介绍
转载:http://outofmemory.cn/java/jvm/jvm-tools-jps-jstat-jinfo-jmap-jhat-jstack 一.jps(JVM Process Statu ...
- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat(复制)
jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程 ...
- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta
JVM监控工具介绍 jstack - 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程 ...
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎 ...
- JVM监控工具介绍
JVM监控工具介绍 VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jst ...
- jcmd、jmc介绍
一.jcmd命令使用 概述 在JDK 1.7之后,新增了一个命令行工具jcmd.它是一个多功能工具,可以用来导出堆,查看Java进程,导出线程信息,执行GC等. 使用示例 下面这个命令能够列出当前运行 ...
- Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
JDK内置工具使用 一.javah命令(C Header and Stub File Generator) 二.jps命令(Java Virtual Machine Process Status To ...
- JVM性能监控与故障处理命令汇总(jps、jstat、jinfo、jmap、jhat、jstack)
给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具才是运用知识处理数据的手段 使用适当的虚拟机监控和分析的工具可以加快我们分析数据.定位解决问题的速度,本文主要介绍了几款服 务器上常用的 ...
- JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...
随机推荐
- VS Code 在线运行:code-server部署(系列一)
偶然间发现VS Code可以在线运行,闲来无事部署了一套试试效果,先上图,是不是很熟悉的感觉,初步体验基本跟本地运行效果一样. 进入正题 首先要准备一套linux环境,环境配置最低是1G内存.2核CP ...
- 使用ensp模拟器中的防火墙(USG6000V)配置NAT(网页版)
使用ensp模拟器中的防火墙(USG6000V)配置NAT(网页版)一.NAT介绍NAT(Network Address Translation,网络地址转换):简单来说就是将内部私有地址转换成公网地 ...
- simple js
simple js 题目描述:小宁发现了一个网页,但却一直输不对密码.(Flag格式为 Cyberpeace{xxxxxxxxx} ) 打开题目后,有一个Enter password框,要求输入密码, ...
- Shell、命令行界面、控制台什么区别
Shell 是什么?Shell 是一个命令解释器,它为用户提供了一个向 操作系统内核发送请求以便运行程序界面系统级程序,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统,他大意是指对系统的操控 ...
- linux(Centos7)安装mysql
查看系统环境 [root@localhost html]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) CentOS 7 ...
- Git教学教程--学生使用教程(非Git操作版)
一.注册(必须) 注册完成后由"教师"将你加入高校/企业组即可: 二.查看项目(必须) 三.查看组织 打开后可查看到如下界面,列出的项目为可操作项目 四.查看高校/企业信息 五.上 ...
- 洛谷P4322.最佳团体
题目大意 一个 \(n(1\leq n\leq 2500)\) 个节点的森林,每个点 \(i\) 有权值 \(s_{i},p_{i}(0<s_{i},p_{i}\leq 10^4)\) 以及父亲 ...
- 『无为则无心』Python日志 — 67、logging日志模块处理流程
目录 1.概括理解 2.详细说明 3.应用示例 1.概括理解 了解了四大组件的基本定义之后,我们通过图示的方式来理解下信息的传递过程: 也就是获取的日志信息,进入到Logger日志器中,传递给处理器确 ...
- ssh执行命令或者脚本里最好先加上 source /etc/profile
记: 写一次shell脚本,发现总提示 找不到JAVA_HOME .明明已经配了环境变量,并且java -version也已经能输出信息,但就是提示. 后来在 脚本中加入第一句代码 source /e ...
- 千万级 PV是什么意思?
首先介绍下pv的概念: PV(访问量):即Page View,页面刷新一次算一次. UV(独立访客):即Unique Visitor,00:00-24:00内相同的客户端只被计算一次. IP(独立IP ...