首页 > 编程 > Java > 正文

Java类加载和卸载的跟踪

2019-11-08 02:37:59
字体:
来源:转载
供稿:网友

博客搬家自https://my.oschina.net/itsyizu/blog/

什么是类的加载和卸载

java程序的运行离不开类的加载,为了更好地理解程序的执行,有时候需要知道系统加载了哪些类。一

为什么要跟踪

般情况下,系统加载的类存在于文件系统中,以jar文件或者class文件的形式存在,可以直接在通过文件系统查看。但是在动态代理、AOP等编程过程中国,系统会在运行过程中动态地生成某些类,这些类相对比较隐蔽,无法通过文件系统找到,为此,虚拟机提供了类的加载|卸载跟踪参数来帮助我们进行程序的调试。

如何跟踪

使用下面的参数来同时跟踪类的加载和卸载

-verbose:class

也可以单独使用下面参数来跟踪类的加载

-XX:+TraceClassLoading

也可以单独使用下面参数来跟踪类的卸载

-XX:+TraceClassUnloading

代码来帮忙

下面的程序是一个java的反射的例子,执行这个程序时,使用-verbose:class参数来跟踪类的加载和卸载

public class SpyUnloadClass { public static void main(String[] args) { Class<?> demo1 = null; Class<?> demo2= null; Class<?> demo3 = null; try { // 一般尽量采用这种形式 demo1 = Class.forName("PartionOnStack"); } catch (Exception e) { e.PRintStackTrace(); } demo2 = new PartionOnStack().getClass(); demo3 = PartionOnStack.class; System.out.println("类名称 " + demo1.getName()); System.out.println("类名称 " + demo2.getName()); System.out.println("类名称 " + demo3.getName()); }}

执行结果如下图所示:

image

JDK工具的使用

Java虚拟允许程序猿在运行程序时打印和查看系统中的类的分布情况,在系统启动时加参数

-XX:+PrintClassHistogram 然后在java的控制台下按下Ctrl+Break(键盘右上角)组合键,控制台就会显示当前类的信息

image


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表