- 浏览: 1255737 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
ypzhangyx:
这要是个小白,看你的文章就得哭啊
AIX安装weblogic并部署web应用 -
cobly1837:
java encoding参考 -
lvwenwen:
very good! mark
银行业务细分,商业银行业务学习(二) -
waiting:
买过这3本书,的确有奇效!
读《火柴棒医生手记》,周尔晋奇人奇事 -
andy20008:
非NT服务修改JVM内存大小 与 NT服务修改JVM内存大小 ...
JIRA不完全手册
- JVM
jvm是jre里头一个动态连接函数库,jdk里面的jre一般用于运行java本身的程序,比如javac,等等.programfiles下面的jre用于运行用户编写的java程序.
JRE下的bin\client 或者 bin\server 的jvm.dll就是JVM了
当一台机器上有多个jvm可选择的时候,jvm的选择步骤:
1)当前目录有没有jre目录(不准确),
2)父目录下的jre子目录
3)注册表HEKY_LOCAL_MACHINE\SoftWare\Java\Java Runtime Environment\
所以当运行的是jdk\bin\java.exe的时候,用的jre是bin的父目录jdk下面的jre\
运行java.exe找到了jre后有一个验证程序,验证jre和java.exe的版本是否一致,如果不一致则会发生错误
- java -verbose:class Main 显示调用的详细信息
- classloader的两种载入方式:1)pre-loading预先载入,载入基础类 2)load-on-demand按需求载入
只有实例化一个类才会被classloader载入,仅仅申明并不会载入
- java动态载入class的两种方式:
1)implicit隐式,即利用实例化才载入的特性来动态载入class
2)explicit显式方式,又分两种方式:
1)java.lang.Class的forName()方法
2)java.lang.ClassLoader的loadClass()方法
- static块在什么时候执行?
1)当调用forName(String)载入class时执行,如果调用ClassLoader.loadClass并不会执行.forName(String,false,ClassLoader)时也不会执行.
2)如果载入Class时没有执行static块则在第一次实例化时执行.比如new ,Class.newInstance()操作
3)static块仅执行一次
Class类的实例.
>>Class类无法手工实例化,当载入任意类的时候自动创建一个该类对应的Class的实例,
>>某个类的所有实例内部都有一个栏位记录着该类对应的Class的实例的位置.,
>>每个java类对应的Class实例可以当作是类在内存中的代理人.所以当要获得类的信息(如有哪些类变量,有哪些方法)时,都可以让类对应的Class的实例代劳.java的Reflection机制就大量的使用这种方法来实现
>>每个java类都是由某个classLoader(ClassLoader的实例)来载入的,因此Class类别的实例中都会有栏位记录他的ClassLoader的实例,如果该栏位为null,则表示该类别是由bootstrap loader载入的(也称root laoder),bootstrap loader不是java所写成,所以没有实例.
原生方法:forName0()等方法,native修饰符
- 自定义ClassLoader:
如实例化一个URLClassLoader. URLClassLoader ucl = new URLClassLoader(new URL[]{new URL("file:/e:/bin/")}),URLClassLoader优先找当前目录,再在url中找.class加载.URL中别忘在最后加"/"表示目录
- 各个java类由哪些classLoader加载?
1)java类可以通过实例.getClass.getClassLoader()得知
2)接口由AppClassLoader(System ClassLoader,可以由ClassLoader.getSystemClassLoader()获得实例)载入
3)ClassLoader类由bootstrap loader载入
- ClassLoader hierachy:
jvm建立->初始化动作->产生第一个ClassLoader,即bootstrap loader->bootstrap loader在sum.misc.Launcher类里面的ExtClassLoader,并设定其Parent为null->bootstrap loader载入sun.misc.Launcher$AppClassLoader,并设定其parent为ExtClassLoader(但是AppClassLoader也是由bootstrap loader所载入的)->AppClassLoader载入各个xx.class,xx.class也有可能被ExtclassLoader或者bootstrap loader载入.
>>自定义的ClassLoader的.getParent()是AppClassLoader.parent和他的加载器并没有关系
>>ExtClassLoader和AppClassLoader都是URLClassLoader的子类.AppClassLoader的URL是由系统参数java.class.path取出的字符串决定,而java.class.path由 运行java.exe时 的-cp或-classpath或CLASSPATH环境变量决定
>>ExtClassLoader查找的url是系统变量java.ext.dirs,java.ext.dirs默认为jdk\jre\lib\ext
>>Bootstrap loader的查找url是sun.boot.class.path
>>在程序运行后调用System.setProperty()来改变系统变量并不能改变以上加载的路径,因为classloader读取在System.setProperty之前.sun.boot.class.path是在程序中写死的,完全不能修改
委派模型
当classloader有类需要载入时先让其parent搜寻其搜寻路径帮忙载入,如果parent找不到,在由自己搜寻自己的搜寻路径载入,ClassLoader hierachy本来就有这种性质
NoClassDefFoundError和ClassNotFoundException
NoClassDefFoundError:当java源文件已编译成.class文件,但是ClassLoader在运行期间在其搜寻路径load某个类时,没有找到.class文件则报这个错
ClassNotFoundException:试图通过一个String变量来创建一个Class类时不成功则抛出这个异常
评论
10 楼
flames
2006-12-17
总结的很不错,不过我想补充一点。
对于委派模型
很多webapp的classLoader是先由子类查询,查不到再由父类查。
对于委派模型
引用
当classloader有类需要载入时先让其parent搜寻其搜寻路径帮忙载入,如果parent找不到,在由自己搜寻自己的搜寻路径载入,ClassLoader hierachy本来就有这种性质
很多webapp的classLoader是先由子类查询,查不到再由父类查。
9 楼
hasi
2006-09-30
整理的不错!感谢
8 楼
ops2000
2006-09-28
确实不错,这个怎么能算空中楼阁?我看文章很实际并且有用。
我也支持加精!
建议楼主再增加一点路径搜索的说明,这样更详细一点了。
我也支持加精!
建议楼主再增加一点路径搜索的说明,这样更详细一点了。
7 楼
抛出异常的爱
2006-09-27
呵呵
过一阵子就可以打分了
到时候把所有的认为要加精的都加了精爽一把。。。
过一阵子就可以打分了
到时候把所有的认为要加精的都加了精爽一把。。。
6 楼
adamzhao
2006-09-27
抛出异常的爱 写道
cedar_1982 写道
adamzhao 写道
哪位达人麻烦一下给打分加入精华吧
不错!对于大多数人没用的空中楼阁没必要精华。。。。。
头次见人求精的帖子
呵呵,我看了这篇文章之后觉得不错,可惜我还没有权利打分,所以希望有这个权限的可以考虑一下。
无他!
5 楼
galaxystar
2006-09-26
抛出异常的爱 写道
cedar_1982 写道
adamzhao 写道
哪位达人麻烦一下给打分加入精华吧
不错!对于大多数人没用的空中楼阁没必要精华。。。。。
头次见人求精的帖子
呵呵,对于理解原理,是有点帮助的!
但是加精应该是多数人都认同的!才可以加精的!
JVM,我想搞JAVA的,或多或少都知道些!对于本身,书本上也是有详细介绍的!
所以,支持楼上的!
4 楼
抛出异常的爱
2006-09-26
cedar_1982 写道
adamzhao 写道
哪位达人麻烦一下给打分加入精华吧
不错!对于大多数人没用的空中楼阁没必要精华。。。。。
头次见人求精的帖子
3 楼
cedar_1982
2006-09-26
adamzhao 写道
哪位达人麻烦一下给打分加入精华吧
不错!
2 楼
adamzhao
2006-09-26
哪位达人麻烦一下给打分加入精华吧
1 楼
jamesdot
2006-09-26
刚刚好需要:)
发表评论
-
继续说代理:用apache给tomcat/weblogic设置代理
2009-08-14 14:03 6225mod_proxy 是Apache 自带的 模块使用代理技术来 ... -
mysql errorcode: 17的原因及解决
2009-04-09 16:22 3361Caused by: java.sql.SQLExceptio ... -
用foxit reader 3.0快速建立pdf书签
2009-02-12 12:33 8608foxit reader 2.3之后加入了自定义书签的功能,官 ... -
strokeit
2008-12-19 17:34 0http://www.wecycling.com/index. ... -
Cognos reportnet开启权限认证针对空报表拆分产生的exception是不同的
2008-12-17 15:50 3284未开启权限认证时,即 ... -
FT,有时候重新设定环境变量还得重启Windows机器
2008-11-25 11:46 2379一台windows 2003 server机器,安装了cogn ... -
ping Source quench received
2008-10-28 15:27 2534ping error "source requenc ... -
foxmail没法压缩邮箱的解决办法
2008-10-28 09:32 5170通过Gmail发送了几个超大的邮件,最大的一个有20万行 ... -
beyond compare3使用
2008-08-27 23:42 40761.比较文本数据差异。 文本数据指的是类似csv文件的数据、定 ... -
svn:ignore
2008-07-04 14:44 75761.已经在版本控制的目录或者文件是不能加入svn:ignore ... -
Foxmail邮件备份到Gmail
2008-05-20 17:21 6130Gmail不断增长貌似无限制的空间+强大的搜索功能 用于储存邮 ... -
spring bean继承的一个误解
2007-06-05 15:22 2972xxAction继承BaseAction,BaseAction ... -
Maven,想说爱你不容易..
2007-05-27 15:25 2127你用maven你会感觉很环保,但是网络不通的时候却又是无尽的烦 ... -
定时加载文件到数据库tips
2007-05-22 17:50 4405装载文本文件,oracle sqlldr是个好用的工具。 如 ... -
javafx,又一个applet?
2007-05-09 18:26 5308JavaOne 出来的东西,demo和文档:https://o ... -
xwork升级到1.2 反而多了些小问题
2007-04-18 19:12 25391.每调用一个action都给出几条警告: WARN [com ... -
在many-to-many的中间表中配置索引
2007-04-11 15:44 4992<set name="cards" ... -
喜新厌旧的后果
2007-04-10 15:43 2085一直用pl/sql dev 6.0好好的,但是看到最新版本都是 ... -
jboss rules3.1m终于用了一个el:mvel,性能与ognl的对比有些让人吃惊
2007-04-10 13:41 8022引用 Later I will also move templ ... -
加班被锁,郁闷...
2007-04-05 20:25 3648等待解救中...
相关推荐
Java基础知识点,内容比较全面。 目录: 1.1 Java中的引用概念 1.2 Java多线程相关知识 1.3 Java中的垃圾回收算法 1.4 Java IO流相关知识 1.5 JVM ClassLoader机制 1.6 Java中的synchronized使用 1.7 Java中的...
今天我们进入《Java常用基础知识》专题,动力节点Java资源库整合了近年各大厂的面试中的常见问题和知识点。每天更新10个,我们的最终目标就是大厂,若对题目有疑问,可在公众号后台留言提问。 目标:阿里巴巴、腾讯...
类加载器 ClassLoader 反射 Stream 流 函数式编程 Lambda 表达式 网络编程-协议 网络编程-端口 网络编程-IP 多线程 IO流-字节流 IO流-字符流 IO流-转换流 File Map HashMap 序列化和反序列化 可变参数 类型通配符 ...
部分主要阐述Thread的基础知识,详细介绍线程的API使用、线程安全、线程间数据通信,以及如何保护共享资源等内容,它是深入学习多线程内容的基础。 第二部分引入了ClassLoader,这是因为ClassLoader与线程不无关系,...
= 秘书 = 类加载器 = ClassLoader = 保镖 = 字节码校验器 = ByteCode Verifier = 翻译 = 解释执行器 = Interfreter 2:安全 健壮 电力 电信 银行 都会有限考虑使用java实现 3:免费 开源 4:简单 语法简单...
介绍JVM的基本知识和发展历史,并介绍了Java语言规范和JVM规范。 第二课 JVM运行机制简介 堆、栈、方法区等 JVM启动流程 内存模型和volatile实例 解释和编译运行的概念 介绍JVM的内部结构、启动流程以及内存模型。...
3.2 相关Java基础知识 3.2.1 简单实例 3.2.2 类装载器ClassLoader 3.2.3 Java反射机制 3.3 资源访问利器 3.3.1 资源抽象接口 3.3.2 资源加载 3.4 BeanFactory和ApplicationContext 3.4.1 BeanFactory介绍 3.4.2 ...
3.2 相关Java基础知识 3.2.1 简单实例 3.2.2 类装载器ClassLoader 3.2.3 Java反射机制 3.3 资源访问利器 3.3.1 资源抽象接口 3.3.2 资源加载 3.4 BeanFactory和ApplicationContext 3.4.1 BeanFactory介绍 3.4.2 ...
插件化代码的编写,涉及到的知识点主要有java中的反射,动态代理,静态代理以及android中的AIDL跨进程通信,binder机制,ClassLoader加载机制,四大组件的运行原理等等。本项目代码主要参考和。在此基础上做了大量的...
【反射】反射中,Class.forName和classloader的区别 42 【JVM】JAVA编译原理和JVM原理 42 【JVM】Java内存模型 44 【JVM】jvm内存模型 45 主内存与工作内存 45 内存间交互操作 46 重排序 48 【JVM】内存泄漏 49 ...
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM .........................
以下是总结java面试中常见的知识点以及碰到的坑等,经历有限,需待练级! 一、java基础 实例方法和静态方法有什么不一样? Java中的异常有哪几类?分别怎么使用? 常用的集合类有哪些?比如List如何排序? ArrayList...
Java知识点 1. 基本语法和对象概念,异常,反射等 关键字保留字的基本概念 基础类型用法,各自占据的字节 访问权限控制总结 String类的研究,String可以被继承吗,为什么不可变,在虚拟机内存中是怎么存储的 String...
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
著和管理相关的复杂问题的体系结构。JE技术的基础就是核心Java平台或Java平台的标 准版,JEE不仅巩固了标淮版屮的诈多优点,例如“编写一次、随处运行”的特性、方便存 取数据库的 JDBC API、 CORBA技术以及能够在 ...