摘要:
什么是代理 所谓代理,就是将要执行的动作,请一个第三方的代替执行。一个现实中的例子,比如,有一个人要做手术时,需要家属签字,那么,这个过程中,家属就相当于是病人的代理,家属会代替病人签字,出院的时候,家属也可以代替病人办理出院。而在手术的过程中,医生需要用到的一些药物,也需要家属签字,家属也可以选择 阅读全文
摘要:
线程安全 《Java Concurrency In Practice》的作者Brian Goetz对线程安全的定义:当多个线程访问一个对象时,如果不用老驴这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个 阅读全文
摘要:
线程的实现 线程的实现方式主要有3种: 使用内核线程实现 使用用户线程实现 使用用户线程加轻量级进程混合实现 使用内核线程实现 内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器对线程进行调度,并负责将线程的任 阅读全文
摘要:
主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量包括实例变量、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为局部变量与方法参数是线程私有的,不会被共享,不会存在竞争问题。 Java内存 阅读全文
摘要:
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。Java运行期动态加载和动态连接的特点使得Java天生就具有动态扩展的语言特性。 类加载的时机 类从被加载到虚拟机内存开始,到卸载出内存为止,整个 阅读全文
摘要:
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(操作码)以及跟随其后的零至多个代表此操作所需参数(操作数)构成。字节码指令集是一种具有鲜明特点、优劣势都很突出的指令集架构,由于限制了Java虚拟机操作码的长度为一个字节,所以指令集的操作码总数不可能超过256条。 加载和存储指令 阅读全文
摘要:
类文件即.class文件,能够在java虚拟机上运行。Java虚拟机不和包括Java在内的任何语言绑定,只与Class文件这种特定的二进制文件格式关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。class文件可以由其他语言编译而来,例如:JRuby、Jython、Sca 阅读全文
摘要:
Minor GC与Full GC **Minor GC:**新生代GC,指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。 **Full GC:**老年代GC,或者Major GC。指发生在老年代的GC,出现了Major GC 阅读全文
摘要:
**备注:**基于JDK1.7 Update 14之后的版本。 Serial收集器 Serial收集器是最基本、发展历史最悠久的收集器,在JDK1.3.1之前是虚拟机新生代收集的唯一选择。Serial收集器是一个单线程的收集器,需要注意的是这里的“单线程”并不仅仅说明它只会使用一个CPU或一条收集线 阅读全文