• Java类加载和卸载的跟踪


    博客搬家自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

  • 相关阅读:
    WPF动态加载3D 放大-旋转-平移
    WPF窗口继承实现统一风格的自定义窗口
    桌面程序的其他实现方式----使用WPF窗体展现网页
    WPF 中自定义控件及其使用
    flask系列三之Jinja2模板
    Python模块学习
    利用Flask-SQLAlchemy提供的paginate()方法实现博客文章的分页显示
    Python利用flask sqlalchemy实现分页效果
    sqlalchemy和flask-sqlalchemy几种分页操作
    Python SQLAlchemy ORM示例
  • 原文地址:https://www.cnblogs.com/shugen/p/6862980.html
Copyright © 2020-2023  润新知