zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    gcc编译器
    samba服务器
    NFS服务器
    tftp服务器配置过程
    centos6.5下编译hello.ko驱动程序
    使用poi导出数据到excel
    使用poi根据模版生成word文档,支持插入数据和图片
    使用javaMail实现简单邮件发送
    outlook2016用Exchange轻松绑定腾讯企业邮箱
    Python Pyinstaller打包含pandas库的py文件遇到的坑
  • 原文地址:https://www.cnblogs.com/shugen/p/6862980.html
Copyright © 2011-2022 走看看