深入研究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 加载类java_深入研究Java类加载机制
深入研究Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比 ...
- Java类加载机制深度分析
为什么80%的码农都做不了架构师?>>> Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. ...
- 两道面试题,带你解析Java类加载机制
2019独角兽企业重金招聘Python工程师标准>>> 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa {static ...
- Java类加载机制详解【java面试题】
Java类加载机制详解[java面试题] (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数 ...
- 谈谈 Java 类加载机制
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 来源:Rainstorm , github.com/c-rainstorm/blog/blob/m ...
- Java类加载机制:双亲委托模型
Java类加载机制:双亲委托模型 前言(废话) 一如既往,这篇博客是我极为浅显的理解,仅仅是我记录我自己成长的一环而已.我以前听我老师说过,什么是进步,进步就是当你三个月后重新再看自己的代码,发现那就 ...
- Java高级篇——深入浅出Java类加载机制
转载自 Java高级篇--深入浅出Java类加载机制 类加载器 简单讲,类加载器ClassLoader的功能就是负责将class文件加载到jvm内存. 类加载器分类 从虚拟机层面讲分为两大类型的类加载 ...
- Java类加载机制的理解
算上大学,尽管接触Java已经有4年时间并对基本的API算得上熟练应用,但是依旧觉得自己对于Java的特性依然是一知半解.要成为优秀的Java开发人员,需要深入了解Java平台的工作方式,其中类加载机 ...
- java版如何使区块常加载,Java类加载机制 - suer27zhu的个人空间 - OSCHINA - 中文开源技术交流社区...
首先上图 如图所示,Java类加载机制的六个阶段 Java代码编译完成后会生成对应的class文件,接着我们运行java命令的时候,其实是启动了JVM虚拟机执行class字节码文件的内容.大致分为六个 ...
最新文章
- 机器学习(11)线性回归(1)理论:损失函数(含最小二乘法)、正规方程、梯度下降、回归性能评估(均方差)
- ubuntu16.04 ROS安转及RVIZ启动
- 推荐几个BAT大佬的公众号
- Delphi的内存管理及内存泄露问题
- 那些常见的Web前端学习误区分享
- linux版azure应用服务,【应用服务 App Service】解决无法从Azure门户SSH登录问题
- node08-express
- Silverlight Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)...
- 系统上关闭是意外的_紧急关闭iOS13,有史以来跳版本关闭系统
- GitHub 遭黑客攻击勒索;苹果夸大 iPhone 电池续航时间;全球第二大暗网被摧毁 | 极客头条...
- 怎么改python系统路径_动态修改python系统路径
- (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
- java 高斯投影_高斯投影正算公式以及java代码
- 卫星互联网若干关键技术研究
- web端实现二维码扫码记录
- HTML5原生WebGL开发系列教程
- Python 数据处理与分析(六) 设计一个高回报的投资组合(投资回报和风险分析)任务 5:使用Python实现均值-方差组合模型
- python复利终值_财码Python管理会计小实验—投融资管理之货币时间价值
- 内部存储空间不足_手机内部存储空间不足怎么清理
- 2020-12-18T16:51:56+08:00 时间转换方法
热门文章
- 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )
- 【MATLAB】变量 ( 变量引入 | 变量类型 )
- 【Netty】mmap 和 sendFile 零拷贝原理
- 将h5用HBuilderX打包成安卓app后,document.documentElement.scrollTop的值始终为0或者document.body.scrollTop始终为0...
- 区块链:新经济蓝图及导读
- 如何获取程序返回值,退出码,错误码
- 求幂运算、多项式乘法及Horner法则的应用
- ECMAScript 继承机制实现
- 关于vs中代码生成的运行库
- BZOJ2132 圈地计划