Jinfo是JDK自带Java配置信息工具。位于java的bin目录下,jinfo的作用是实时地查看和调整虚拟机的各项参数,虽然使用Jps命令的-v参数可以查看虚拟机启动时显示指定的参数列表。但是如果想要知道没有被明确指出的系统默认值,就需要用到jinfo。
Jinfo还能够修改一部分运行期间能够调整的虚拟机参数。
1、Jinfo命令格式
jinfo [ option ] pid
2、常用参数
Usage:
jinfo <option> <pid>
(to connect to a running process)
where<option> is one of:
-flag <name> to print the value of the named VMflag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set thenamed VM flag to the given value
-h | -help to print this help message
3、源代码
package com.jdkTools;
import java.util.ArrayList;
import java.util.Random;
/**
* 简单的应用,有大量的循环和创建对象,供测试JDK自带的jinfo使用
* 参数:-Xms30m -Xmx60m
*
* @author 范芳铭
*/
public class EasyJinfo {
public byte[] placeHolder = newbyte[1 * 1024]; // 占位符
public static void main(String[]args) throws Exception {
while (true) {
Random random = newRandom();
int loops = random.nextInt(10000);
EasyJinfo jstat = newEasyJinfo();
System.out.println("......正在构建对象:" + loops + "(个)");
jstat.getLoop(loops); //多次循环,产生大量对象
Thread.sleep(100);
}
}
public void getLoop(int size) {
ArrayList<EasyJinfo>list = new ArrayList<EasyJinfo>();
for (int i = 0; i < size;i++) {
EasyJinfo jstat = newEasyJinfo();
list.add(jstat);
}
}
}
4、运行参数
* 参数:-Xms30m -Xmx60m ,本参数用于启动JVM虚拟机
5、运行结果(jinfo 查看、调整JVM参数)
首先要用JPS找到对应的进程ID
C:\Program Files\Java\jdk1.6.0_25\bin>jps -v
5340 Jps -Dapplication.home=C:\ProgramFiles\Java\jdk1.6.0_25 -Xms8m
1768 EasyJinfo -Xms30m -Xmx60m -Dfile.encoding=GBK
2856 -Xms256m-Xmx768m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m-Dosgi.nls.warnings=ignore
然后执行jinfo
C:\Program Files\Java\jdk1.6.0_25\bin>jinfo -flagSurvivorRatio 1768
-XX:SurvivorRatio=8
注意:很多运行参数是不能调整的,如果出现这种异常,说明不能调整:
Exception in thread "main" java.io.IOException:Command failed in target VM