深入研究Java类载入机制
|
键
|
相关值的描写叙述
|
| java.version | Java 执行时环境版本号 |
| java.vendor | Java 执行时环境供应商 |
| java.vendor.url | Java 供应商的 URL |
| java.home | Java 安装文件夹 |
| java.vm.specification.version | Java 虚拟机规范版本号 |
| java.vm.specification.vendor | Java 虚拟机规范供应商 |
| java.vm.specification.name | Java 虚拟机规范名称 |
| java.vm.version | Java 虚拟机实现版本号 |
| java.vm.vendor | Java 虚拟机实现供应商 |
| java.vm.name | Java 虚拟机实现名称 |
| java.specification.version | Java 执行时环境规范版本号 |
| java.specification.vendor | Java 执行时环境规范供应商 |
| java.specification.name | Java 执行时环境规范名称 |
| java.class.version | Java 类格式版本 |
| java.class.path | Java 类路径 |
| java.library.path | 载入库时搜索的路径列表 |
| java.io.tmpdir | 默认的暂时文件路径 |
| java.compiler | 要使用的 JIT 编译器的名称 |
| java.ext.dirs | 一个或多个扩展文件夹的路径 |
| os.name | 操作系统的名称 |
| os.arch | 操作系统的架构 |
| os.version | 操作系统的版本号 |
| file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
| path.separator | 路径分隔符(在 UNIX 系统中是“:”) |
| line.separator | 行分隔符(在 UNIX 系统中是“/n”) |
| user.name | 用户的账户名称 |
| user.home | 用户的主文件夹 |
| user.dir | 用户的当前工作文件夹 |
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
| java.runtime.name | Java(TM) SE Runtime Environment |
| sun.boot.library.path | Q:\jdk6\jre\bin |
| java.vm.version | 14.0-b16 |
| java.vm.vendor | Sun Microsystems Inc. |
| java.vendor.url | http://java.sun.com/ |
| path.separator | ; |
| idea.launcher.port | 7532 |
| java.vm.name | Java HotSpot(TM) Client VM |
| file.encoding.pkg | sun.io |
| sun.java.launcher | SUN_STANDARD |
| user.country | CN |
| sun.os.patch.level | Service Pack 3 |
| java.vm.specification.name | Java Virtual Machine Specification |
| user.dir | E:\projects\testScanner |
| java.runtime.version | 1.6.0_14-b08 |
| java.awt.graphicsenv | sun.awt.Win32GraphicsEnvironment |
| java.endorsed.dirs | Q:\jdk6\jre\lib\endorsed |
| os.arch | x86 |
| java.io.tmpdir | C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ |
| line.separator | |
| java.vm.specification.vendor | Sun Microsystems Inc. |
| user.variant | |
| os.name | Windows XP |
| sun.jnu.encoding | GBK |
| java.library.path | Q:\jdk6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;Q:\jdk6\bin;Q:\JavaFX\javafx-sdk1.2\bin;Q:\JavaFX\javafx-sdk1.2\emulator\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\MySQL Server 5.1\bin;C:\Program Files\StormII\Codec;C:\Program Files\StormII |
| java.specification.name | Java Platform API Specification |
| java.class.version | 50 |
| sun.management.compiler | HotSpot Client Compiler |
| os.version | 5.1 |
| user.home | d:\我的文档 |
| user.timezone | |
| java.awt.printerjob | sun.awt.windows.WPrinterJob |
| idea.launcher.bin.path | C:\IDEA8\bin |
| file.encoding | UTF-8 |
| java.specification.version | 1.6 |
| java.class.path | Q:\jdk6\jre\lib\alt-rt.jar;Q:\jdk6\jre\lib\charsets.jar;Q:\jdk6\jre\lib\deploy.jar;Q:\jdk6\jre\lib\javaws.jar;Q:\jdk6\jre\lib\jce.jar;Q:\jdk6\jre\lib\jsse.jar;Q:\jdk6\jre\lib\management-agent.jar;Q:\jdk6\jre\lib\plugin.jar;Q:\jdk6\jre\lib\resources.jar;Q:\jdk6\jre\lib\rt.jar;Q:\jdk6\jre\lib\ext\dnsns.jar;Q:\jdk6\jre\lib\ext\localedata.jar;Q:\jdk6\jre\lib\ext\sunjce_provider.jar;Q:\jdk6\jre\lib\ext\sunmscapi.jar;Q:\jdk6\jre\lib\ext\sunpkcs11.jar;E:\projects\testScanner\out\production\testScanner;C:\IDEA8\lib\idea_rt.jar |
| user.name | Administrator |
| java.vm.specification.version | 1 |
| java.home | Q:\jdk6\jre |
| sun.arch.data.model | 32 |
| user.language | zh |
| java.specification.vendor | Sun Microsystems Inc. |
| awt.toolkit | sun.awt.windows.WToolkit |
| java.vm.info | mixed mode, sharing |
| java.version | 1.6.0_14 |
| java.ext.dirs | Q:\jdk6\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext |
| sun.boot.class.path | Q:\jdk6\jre\lib\resources.jar;Q:\jdk6\jre\lib\rt.jar;Q:\jdk6\jre\lib\sunrsasign.jar;Q:\jdk6\jre\lib\jsse.jar;Q:\jdk6\jre\lib\jce.jar;Q:\jdk6\jre\lib\charsets.jar;Q:\jdk6\jre\classes |
| java.vendor | Sun Microsystems Inc. |
| file.separator | \ |
| java.vendor.url.bug | http://java.sun.com/cgi-bin/bugreport.cgi |
| sun.io.unicode.encoding | UnicodeLittle |
| sun.cpu.endian | little |
| sun.desktop | windows |
| sun.cpu.isalist |
3、Bootstrap Loader(启动类载入器)是最顶级的类载入器了,其父载入器为null.
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
Class c = hello.getClass();
ClassLoader loader = c.getClassLoader();
System.out.println(loader);
System.out.println(loader.getParent());
System.out.println(loader.getParent().getParent());
}
}
sun.misc.Launcher$ExtClassLoader@addbf1
null
Process finished with exit code 0
public static void main(String[] args) throws ClassNotFoundException {
ClassLoader loader = HelloWorld.class.getClassLoader();
System.out.println(loader);
//使用ClassLoader.loadClass()来载入类,不会运行初始化块
loader.loadClass("Test2");
//使用Class.forName()来载入类,默认会运行初始化块
// Class.forName("Test2");
//使用Class.forName()来载入类,并指定ClassLoader,初始化时不运行静态块
// Class.forName("Test2", false, loader);
}
}
static {
System.out.println("静态初始化块运行了!");
}
}
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
/**
* 自己定义ClassLoader
*
* @author leizhimin 2009-7-29 22:05:48
*/
public class MyClassLoader {
public static void main(String[] args) throws MalformedURLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
URL url = new URL("file:/E:\\projects\\testScanner\\out\\production\\testScanner");
ClassLoader myloader = new URLClassLoader(new URL[]{url});
Class c = myloader.loadClass("test.Test3");
System.out.println("----------");
Test3 t3 = (Test3) c.newInstance();
}
}
static {
System.out.println("Test3的静态初始化块运行了!");
}
}
Test3的静态初始化块运行了!
Process finished with exit code 0
深入研究Java类载入机制的更多相关文章
- 深入研究Java类装载机制
目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...
- Java虚拟机的类载入机制
Java虚拟机类载入过程是把Class类文件载入到内存.并对Class文件里的数据进行校验.转换解析和初始化,终于形成能够被虚拟机直接使用的java类型的过程. 在载入阶段,java虚拟机须要完毕下面 ...
- java类载入器——ClassLoader
Java的设计初衷是主要面向嵌入式领域,对于自己定义的一些类,考虑使用依需求载入原则.即在程序使用到时才载入类,节省内存消耗,这时就可以通过类载入器来动态载入. 假设你平时仅仅是做web开发,那应该非 ...
- Java 类反射机制分析
Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...
- JVM系列文章(四):类载入机制
作为一个程序猿,只知道怎么用是远远不够的. 起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP ...
- Java类载入器 ClassLoader的解析
//參考 : http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类载入器基本概念 类载入器是 Java 语言的一个创新,也是 Ja ...
- Java类载入器原理分析
一:Java虚拟机中能够安装多个类载入器,系统默认是三个基本的类载入器: Bootstrap ExtClassLoader AppClassLoader 类载入器也是Java类.由于其它Java类 ...
- DexClassLoader和PathClassLoader类载入机制
0x00 在DexClassLoader和PathClassLoader载入Dex流程一文中,我们分析了dex文件怎样形成了DexFile结构体.本文中解说类载入机制,实际上就是生成ClassObje ...
- Java类载入器(一)——类载入器层次与模型
类载入器 虚拟机设计团队把类载入阶段中的"通过一个类的全限定名来获取描写叙述此类的二进制字节流"这个动作放到Java虚拟机外部去实现.以便让应用程序自己决定怎样去获取所须要的类 ...
随机推荐
- Python数据结构-字典
tel={,} tel[ print(tel) print(tel['tom']) del tel['tom'] print(tel) print(tel.keys()) 运行结果: {, , } { ...
- java.lang.NullPointerException错误分析
java.lang.NullPointerException是什么错误 你使用了空的指针.在java中虽然号称抛弃了C++中不安全的指针,但其实他所有的东西你都可以理解为指针.这种情况一般发生在你使用 ...
- android中listview分页载入数据
前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...
- windows下php开发环境的搭建
环境搭建软件组合为:Apache2.2.9+mysql5.2.32+php5.2.6 下载地址如下 http://download.csdn.net/detail/xttxqjfg/5670455 ...
- [WPF]Binding的Converter和Validator
不拘一格用数据的Converter 上篇文已经说明,Binding就是数据源与目标之间的“关联”.大多数情况下,数据从Source到Target以及从Target返回Source都是“直来直去”的,但 ...
- SQL Server :理解数据记录结构
原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...
- WPF Media 简单的播放器
<Window x:Class="PlayTest.MediaControl" xmlns="http://schemas.microsoft.com/winfx/ ...
- ACM:回溯,八皇后问题,素数环
(一)八皇后问题 (1)回溯 #include <iostream> #include <string> #define MAXN 100 using namespace st ...
- ORA-00020的思考
今天,历史的图书馆例行检查DB,发现alert.log有一"ORA-00020: maximum number of processes (150) exceeded",这是一个常 ...
- Android Tombstone/Crash的log分析和定位
有一句话叫做常在河边走,哪有不湿鞋.我们这些研究和开发Android的project师正应了这句话,相必大家在调试的时候常常会遇到这么个东西吧 *** *** *** *** *** *** *** ...