JVM-verbose参数详解
2015-07-13 14:52
357 查看
java-verbose[:class|gc|jni] 在输出设备上显示虚拟机运行信息。
1.java-verbose:class
在程序运行的时候有多少类被加载!你可以用verbose:class来监视,
在命令行输入java -verbose:class XXX (XXX为程序名),你会在控制台看到加载的类的情况。
verbose和verbose:class含义相同,输出虚拟机装入的类的信息,显示的信息格式如下:
[OpenedD:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Object from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.io.Serializable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Comparable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.CharSequence from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.String from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.reflect.GenericDeclaration from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.reflect.Type from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.reflect.AnnotatedElement from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Class from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Cloneable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.ClassLoader from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.System from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Throwable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
当虚拟机报告类找不到或类冲突时可用此参数来诊断来查看虚拟机装入类的情况。
2.java–verbose:gc
在虚拟机发生内存回收时在输出设备显示信息,格式如下: [Full GC 256K->160K(124096K), 0.0042708 secs] 该参数用来监视虚拟机内存回收的情况。
publicclass JvmVerbose {
/**
* JVM-verbose[:class|gc|jni] 参数测试
* @paramargs
*/
publicstatic void main(String[] args) {
JvmVerbosejvmVerbose = new JvmVerbose();
System.gc();
}
}
在这个例子中,一个新的对象被创建,由于它没有使用,所以该对象迅速地变为可达,程序编译后,执行命令: java -verbose:gc JvmVerbose
后结果为:
[GC647K->256K(124096K), 0.0274253 secs]
[Full GC256K->160K(124096K), 0.0042708 secs]
箭头前后的数据256K和160K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有256K-160K=96K的对象容量被回收,括号内的数据124096K为堆内存的总容量,收集所需要的时间是0.0042708秒(这个时间在每次执行的时候会有所不同)。
3.java–verbose:jni
-verbose:jni输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
在虚拟机调用native方法时输出设备显示信息,格式如下: [Dynamic-linking native method java.lang.Object.registerNatives ...JNI] 该参数用来监视虚拟机调用本地方法的情况,在发生jni错误时可为诊断提供便利。
1.java-verbose:class
在程序运行的时候有多少类被加载!你可以用verbose:class来监视,
在命令行输入java -verbose:class XXX (XXX为程序名),你会在控制台看到加载的类的情况。
verbose和verbose:class含义相同,输出虚拟机装入的类的信息,显示的信息格式如下:
[OpenedD:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Object from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.io.Serializable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Comparable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.CharSequence from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.String from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.reflect.GenericDeclaration from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.reflect.Type from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.reflect.AnnotatedElement from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Class from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Cloneable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.ClassLoader from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.System from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loadedjava.lang.Throwable from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
当虚拟机报告类找不到或类冲突时可用此参数来诊断来查看虚拟机装入类的情况。
2.java–verbose:gc
在虚拟机发生内存回收时在输出设备显示信息,格式如下: [Full GC 256K->160K(124096K), 0.0042708 secs] 该参数用来监视虚拟机内存回收的情况。
publicclass JvmVerbose {
/**
* JVM-verbose[:class|gc|jni] 参数测试
* @paramargs
*/
publicstatic void main(String[] args) {
JvmVerbosejvmVerbose = new JvmVerbose();
System.gc();
}
}
在这个例子中,一个新的对象被创建,由于它没有使用,所以该对象迅速地变为可达,程序编译后,执行命令: java -verbose:gc JvmVerbose
后结果为:
[GC647K->256K(124096K), 0.0274253 secs]
[Full GC256K->160K(124096K), 0.0042708 secs]
箭头前后的数据256K和160K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有256K-160K=96K的对象容量被回收,括号内的数据124096K为堆内存的总容量,收集所需要的时间是0.0042708秒(这个时间在每次执行的时候会有所不同)。
3.java–verbose:jni
-verbose:jni输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
在虚拟机调用native方法时输出设备显示信息,格式如下: [Dynamic-linking native method java.lang.Object.registerNatives ...JNI] 该参数用来监视虚拟机调用本地方法的情况,在发生jni错误时可为诊断提供便利。
相关文章推荐
- ubuntu中安装jdk
- 谁来主导ERP项目
- request.getRealPath不推荐使用request.getRealPath("") 这个方法已经不推荐使用了
- JS验证身份证、营业执照、组织机构代码等
- matlab学习笔记(一)单元数组
- JQuery EasyUI 之 DataGrid
- HTML5 仿QT 示例Drag and Drop Robot 换装机器人
- CentOS下yum安装g++
- try catch finally巩固
- JAVA多线程和并发性知识点总结
- Java Math.abs
- 理想的应用框架
- 【Energy Forecasting】能源预测的发展和展望
- ORA-12514(TNS:监听程序当前无法识别)解决方案
- 凯利公式
- Visual Studio调试技巧 -- Attach to Process #Reprinted#
- 使用flume替代原有的scribe服务
- 关于Java 23种设计模式的有趣见解
- java项目中Javah的使用
- Java中的代码块系列1——静态代码块和构造代码块的调用机制