JVM 类加载器
蓝天的IT生涯
这个作者很懒,什么都没留下…
展开
-
Java那点事——类加载器结构
在Java语言中,类型的加载和连接过程都是在程序运行期间完成的,尽管这样会带来一定的开销,但是却能为Java应用程序提供高度的灵活性,Java的动态扩展属性正是依赖运行期动态加载和动态连接这个特点实现的。 Java中类的整个生命周期为:加载->验证->准备->解析->初始化->使用->卸载。类加载器便是作用于"加载"阶段,它完成的功能为:通过一个类的全限定名来获取描述此类的二转载 2013-04-13 17:59:43 · 695 阅读 · 0 评论 -
java类加载
java中类的生命周期。 java类的生命周期:一个.class文件从加载到卸载的全过程。 过程包含:加载,连接,初始化,使用(类对象的生命周期。),卸载。 加载阶段: 1.找到需要加载的类并把类的信息加载到JVM的方法区 2.然后在堆中实例化一个java.lang.Class对象,作为方法区中这个类的信息入口。(反射) 类的加载方式比较灵活,我们最常用的加转载 2013-06-22 21:55:53 · 759 阅读 · 0 评论 -
符号引用和直接引用
总结:JVM对于直接引用和符号引用的处理是有区别的,可以看到符号引用时,JVM将使用StringBuilder来完成字符串的 添加,而直接引用时则直接使用String来完成;直接引用永远比符号引用效率更快,但实际应用开发中不可能全用直接引用,要提高效能可以考虑按虚拟机的思维来编写你的程序。 1.0 直接引用: public class StringAndStringBuilder{转载 2013-06-22 21:43:00 · 6710 阅读 · 0 评论 -
JVM类加载过程学习总结
JVM类加载过程学习总结 先不说JVM类加载的原理,先看实例: NormalTest类,包含了一个静态代码块,执行的任务就是打印一句话。 /** * 在正常类加载条件下,看静态代码块是否会执行 * @author jianying.wcj * @date 2013-6-21 */ public class NormalTest { static {原创 2013-06-22 21:54:18 · 1381 阅读 · 0 评论 -
ClassLoader装载类的方式比较
一直以来对这个问题比较迷惑,今天找了些资料整理的下,基本搞清楚了2者的区别了。在此写些东西权当是整理并与大家分享。 ClassLoader.loadClass()与Class.forName()大家都知道是反射用来构造类的方法,但是他们的用法还是有一定区别的。 在讲区别之前,我觉得很有不要把类的加载过程在此整理一下。 在Java中,类装载器把一个类装转载 2013-06-21 09:20:40 · 741 阅读 · 0 评论 -
一篇写的不错的讲解类的动态加载的文章
一. 概述 名词解释:所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。 对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装转载 2013-04-30 14:27:39 · 1198 阅读 · 0 评论 -
class的动态加载的一个实现方案
背景 想调用ASM API (用于字节码处理的开源API)对字节码进行处理,目标是实现对java程序运行时各种对象的动态跟踪,并进一步分析各个对象之间的关系(研究前提是目前的UML锁阐释的whole-part relation 是比较混乱的)。由于ASM相关内容又可以延伸很远,在此文中略过。 在完成了能对字节码进行处理的ASM调用以后,需要考虑如何将这些功能与正常的java程序整合到一转载 2013-04-30 14:26:30 · 829 阅读 · 0 评论 -
自定一个类加载器
java虚拟机中,有一个类加载子系统,它包括了四种类加载器 1、根装载器(启动类装载器)2、扩展类装载器3、系统类装载器4、用户自定义类加载器 根加载器负责加载API里面的类,例如java.lang.object 扩展类装载器复制加载jre中ext包中的类,如C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext 系统类装载器加载clas转载 2013-04-27 20:47:21 · 715 阅读 · 0 评论 -
JVM类加载器
在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方 法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方 式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂转载 2013-04-28 13:08:07 · 572 阅读 · 0 评论 -
JVM类加载器
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader | system classloader bootstrap classlo转载 2013-04-13 18:00:31 · 899 阅读 · 0 评论 -
ClassNotFoundException和NoClassDefFoundError的区别
正如它们的名字所说明的:NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中错误和异常是有区别的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。 ClassNotFoundException的产生原因: Java支持使用Class.forName方法来动态地加载类,任意一个类的类名如果被作为参转载 2014-03-06 18:30:39 · 792 阅读 · 0 评论