Home
malinkang
Cancel

《深入理解JVM》第13章线程安全和锁优化

13.3 锁优化 高效并发是从JDK 1.5到JDK 1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(AdaptiveSpinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等,这些技术...

《深入理解JVM》第12章内存模型与线程

《深入理解JVM》第10章编译期优化

第10章 Java内存区域与内存溢出 10.1 概述 10.2 Javac编译器 10.2.1 Javac的源码与调试 从Sun Javac的代码来看,编译过程大致可以分为3个过程,分别是: 解析与填充符号表过程。 插入式注解处理器的注解处理过程。  分析与字节码生成过程。 这3个步骤之间的关系与交互顺序如图10-4所示。 Javac编译动作的入口是com...

《深入理解JVM》第8章虚拟机字节码执行引擎

《深入理解JVM》第7章虚拟机类加载机制

类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking)。 加载、验证、准备、初始化和卸载...

《深入理解JVM》第6章类文件结构

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。 根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来...

《深入理解JVM》第3章垃圾收集器

垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”了。 判断是对象是否应该被回收 引用计数算法 引用计数算法(Reference Counting)就是对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 优点:原理简单,判定效率也很高...

《深入理解JVM》第2章Java内存区域与内存溢出异常

运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示。 程序计数器 程序计数器(Program Co...

Dagger使用指南

任何应用程序中最好的类是那些做事情的类:BarcodeDecoder,KoopaPhysicsEngine和AudioStreamer。 这些类具有依赖性; 也许是一个BarcodeCameraFinder,DefaultPhysicsEngine和一个HttpStreamer。 相比之下,任何应用程序中最糟糕的类是那些占用空间而又没有做太多事情类:BarcodeDecoderFactor...

Java线程池

线程池介绍 合理利用线程池能够带来三个好处: 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其...