红联Linux门户
Linux帮助

JDK自带工具之jinfo

发布时间:2015-02-15 15:20:20来源:linux网站作者:ffm83

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