java动态加载机制
假设有一个class,ClassLoader首先把它load到内存里的code segment(内存里存放代码段的),站在ClassLoader的角度,内存里的一个一个的class就是一个一个的对象,这个对象就是xx.class,实际就是Class类的对象。Load完class,找到main函数开始执行,然后会把很多其他的类Load进来,动态加载机制。
测试动态加载机制:
新建项目Reflection,new一个class,TestDynamicLoading:
public class TestDynamicLoading {
public static void main(String[] args) { new A(); System.out.println("*****-------------------------******"); new B(); new C();
new C(); new D();
new D(); } }
class A{ } class B{ }
class C{
//static语句块,只调用一次。
static{
System.out.println("CCCCCCCCCCCCCCCCCCCCCCCCCCCC");
} }
class D{
//动态语句块,每次new出来对象时被调用一次。用的不多。
{
System.out.println("DDDDDDDDDDDDDDDD");
}
}
右键,Run As-----> Run Configurations。
Program arguments:程序命令行参数
VM arguments:虚拟机的参数,java程序运行的时候java命令行上给你指定的虚拟机参数
-verbose:class :详细的输出。
---> Run
可以看到控制台的输出,程序的执行步骤是:
1,先加载 class A,
2,再执行 System.out.println("*****-------------------------******");
3,加载 class B,
4,加载 class C,而且static语句块只执行了一次。
5,加载class D ,动态语句块执行了2次。
java的动态加载机制就是如此,被验证。
[Loaded A from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
*****-------------------------******
[Loaded B from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
[Loaded C from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
CCCCCCCCCCCCCCCCCCCCCCCCCCCC
[Loaded D from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
DDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDD
java动态加载机制的更多相关文章
- java class加载机制及对象生成机制
java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. Cl ...
- Java ClassLoader加载机制理解
今天看到了一篇介绍Java ClassLoader加载机器的文章, 才发觉一直来自己的肤浅, 好好地给补了一课, 不得不存档! 原文地址: http://www.blogjava.net/lhulcn ...
- java动态加载配置文件(申明:来源于网络)
java动态加载配置文件 地址:http://blog.csdn.net/longvs/article/details/9361449
- Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...
- Java ClassLoader加载机制理解 实际例子
针对 Java ClassLoader加载机制理解, 做了个如何自定制简单的ClassLoader,并成功加载指定的类. 不废话,直接上代码. package com.chq.study.cl; im ...
- java动态加载jar文件
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, Invo ...
- Android中的动态加载机制
在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...
- Java ClassLoader加载机制
一.体系结构(自上向下) 1.Bootstrap ClassLoader(BootStrapClassLoader) --- 启动类加载器或者叫引导类加载器,加载jdk核心的APIs,这些APIs一般 ...
- Android之Android apk动态加载机制的研究
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/22597587 (来自singwhatiwanna的csdn博客) 背景 问题 ...
随机推荐
- EAS.Net 在程序里配置组件
public class BeforStart { /// <summary> /// 程序配置初始化 /// </summary> public static void EA ...
- C#集合总结
1.为什么引入集合? 因为数组长度是固定的,为了建立一个动态的"数组",所以引入了集合. 2.为什么引入ArrayList 非泛型集合? ArrayList可以填补数组的不足,进行 ...
- HtmlHelper扩展之mvchtmlstring
后台: using System;using System.Web;using System.Web.Mvc; namespace EwayFramework.Utils.Token{ public ...
- C# 多线程task
1.异步和多线程的区别?没什么太大区别.异步是目的,使用多线程实现.想想AJAX异步加载,不就是不想让浏览器界面卡住嘛,所以在程序中对于某些单独的操作,比如写日志,我们不想等它完成后再执行其它操作(因 ...
- AndroidSDK下载
C:\Windows\System32\drivers\etc\hosts74.125.237.1 dl-ssl.google.com
- 八.linux系统文件属性知识
1.文件属性权限是12位,现在只看9位,其中每3个一组,为:属主权限.属组权限.其他权限,其中r可读,w可写,x可执行,如图: 2.文件属性之软硬链接 linux系统中有两种链接,为硬链接(ln) ...
- kali linux之取证
取证简介: CSI:物理取证 指纹.DNA.弹道.血迹 无力取证的理论基础是物质交换原则 数字取证/计算机取证 智能设备.计算机.手机平板.loT.有线及无线信道.数据存储 事件响应调查------黑 ...
- BZOJ2961: 共点圆(CDQ分治+凸包)
题面 传送门 题解 这题解法真是多啊--据说可以圆反演转化为动态插入半平面并判断给定点是否在半平面交中,或者化一下改成给定点判断是否所有点都在某一个半平面内-- 鉴于圆反演我也不会,这里讲一下直接推的 ...
- robot framework学习笔记之一 资源文件(Resource)和外部资源(External Resources)
一.资源文件(Resource) 测试套件主要是存放测试案例,资源文件主要是用来存放用户关键字. 添加资源 在目录型的Project/Test Suite下单击鼠标右键,选择『New Resou ...
- html基础整理(02浮动 问题)
margin的塌陷现象及解决方案 如果一个大盒子中包含一个小盒子,给小盒子设置margin-top,大盒子会一起向下平移 - 解决方案: 1. 给大盒子加一个边框(border) 2. 给大盒子 ...