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());
}
}
执行结果如下图所示:
JDK工具的使用
Java虚拟允许程序猿在运行程序时打印和查看系统中的类的分布情况,在系统启动时加参数
-XX:+PrintClassHistogram
然后在java的控制台下按下Ctrl+Break(键盘右上角)组合键,控制台就会显示当前类的信息
Java类加载和卸载的跟踪的更多相关文章
- java笔记--理解java类加载器以及ClassLoader类
类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制 ...
- 剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制
剑指Offer--知识点储备-故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以 ...
- 关于java类加载机制的一些理解
关于java的类加载机制加载顺序,这个东西可以说是基础的东西,不过很遗憾这方面很多人也都不是很在意,比如我自己,最近上班闲下来了,就开始看一些博客文章了,今天恰好被一篇博文给吸引了,并且他的示例题一开 ...
- 两道面试题,带你解析Java类加载机制
文章首发于[博客园-陈树义],点击跳转到原文<两道面试题,带你解析Java类加载机制> 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Gr ...
- 【转】两道面试题,带你解析Java类加载机制(类初始化方法 和 对象初始化方法)
本文转自 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html 关键语句 我们只知道有一个构造方法,但实际上Ja ...
- 探秘Java类加载
Java是一门面向对象的编程语言. 面向对象以抽象为基础,有封装.继承.多态三大特性. 宇宙万物,经过抽象,均可归入相应的种类.不同种类之间,有着相对井然的分别. Java中的类,便是基于现实世界中的 ...
- 带你解析Java类加载机制
目录 Java类加载机制的七个阶段 加载 验证 准备(重点) 解析 初始化(重点) 使用 卸载 实战分析 方法论 树义有话说 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如 ...
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...
- Java类加载机制总结
关于Java类加载机制的几个基本概念: JDK提供的基本类加载器:引导类加载器(Bootstrap Class Loader)-用于加载JDK中的核心类.扩展类加载器(Ext Class Loader ...
随机推荐
- 老李分享知识:性能测试之TPS和吞吐率
老李分享知识:性能测试之TPS和吞吐率 当增大系统的压力(或添加并发用户数)时,吞吐率和TPS的改变曲线呈大体一致,则系统基本稳定. 若压力增大时,吞吐率的曲线添加到一定程度后出现改变缓 ...
- SQL语句中的日期查询
我们先创建一个表: CREATE TABLE `student` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(10) NULL COMMEN ...
- JavaEE开发之Spring中的条件注解组合注解与元注解
上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条 ...
- JSP自定义不带属性和标签体的简单标签
1. 新建HelloTag类 2. 添加额外的Jar包 (1). 右键项目 -> Build Path -> Configure Build Path -> Libraries -& ...
- ViewPager—02图片无限轮播
布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- 如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas
前言 软件系统中总是希望做到松耦合,项目的组织形式也是一样,本篇文章将介绍在ASP.NET CORE MVC中怎么样将Controller与主网站项目进行分离,并且对Areas进行支持. 实践 1.新 ...
- 写出稳定的Modbus代码之点滴经验
1.引言 Modbus是工业领域重要的协议,物理层有常见的RS485双绞线和TCP,所以又常说Modbus 485开发和Modbus TCP开发. 前者就是串口通信,比较简单.后者涉及到网络协议,复杂 ...
- sqlldr用法
SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中.SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PAR ...
- iOS 从url中获取文件名以及后缀
//这里有一个模拟器沙盒路径(完整路径) NSString* index=@"/Users/junzoo/Library/Application Support/iPhone Simulat ...
- for xml path 如何将字段转换为xml的属性
for xml path 如何将字段作为xml的属性: 可在查询时 别名用 as '@..' 如'@value' 如下实例: SELECT A.GiftSetGUID AS '@value',A.Gi ...