JVM
硬汉1840
快乐的生活
展开
-
四个主要的ClassLoader
一、BootStrap ClassLoader 这是JVM的根ClassLoader,它是用C++实现的,JVM启动时初始化此ClassLoader,并由此ClassLoader完成%JAVA_HOME%中jre/lib/rt.jar(Sun JDK的实现)中所有class文件的加载,这个jar中包含了java规范定义的所有接口以及实现。二、Extension ClassLoader转载 2012-03-16 14:26:17 · 1315 阅读 · 0 评论 -
ClassLoader抽象类提供的六个关键的方法
一、loadClass 此方法负责加载指定名字的类,ClassLoader的实现方法为先从已经加载的类中寻找,如没有则继续从parentClassLoader中寻找,如仍然没找到,则从System ClassLoader中寻找,最后再调用findClass方法来寻找,如果要改变类的加载顺序,则可覆盖此方法。二、findLoadedClass 此方法负责从当前ClassLoa转载 2012-03-16 14:40:55 · 722 阅读 · 0 评论 -
四种情况下必须立即对类进行“初始化”
对于初始化阶段,虚拟机规范严格规定了有且只有四种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始):一、遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是:使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在转载 2012-03-16 20:57:55 · 1418 阅读 · 2 评论 -
JVM的生命周期
一、JVM实例的诞生 当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。二、JVM实例的运行 main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程转载 2012-03-16 11:48:47 · 549 阅读 · 0 评论 -
tomcat对线程池的扩展
为了减少线程创建和销毁的消耗,通常会使用线程池,在JDK中,默认集成了高效的几种线程池:在tomcat中的线程池并没有自定义实现,而是利用了JDK的线程池,继承了上述的特性,并基于自己的逻辑进行了扩展;1、JDK线程配置属性初始化tomcat的配置文件中,配置标签中的属性:这个Executor,在tomcat各种书籍中叫做执行器,它的实际的作用就是线程池,对于Connector转载 2015-11-24 23:33:51 · 2240 阅读 · 0 评论