JVM虚拟机
Younger_zeng
这个作者很懒,什么都没留下…
展开
-
深入理解Java虚拟机----第一章:走进Java
第一章:走进Java1.1 java概述java技术体系:java程序设计语言各种硬件平台上的java虚拟机Class 文件格式Java API类库来自商业机构和开源社区的第三方Java类库JDK:java程序设计语言、java虚拟机、Java API 这三部分统称为 JDK(Java Development Kit)。JRE:Java API类库中的 Java...原创 2018-08-07 22:42:50 · 1692 阅读 · 1 评论 -
深入理解Java虚拟机----第十二章:Java内存模型与线程
第十二章:Java内存模型与线程12.1概述衡量一个服务端的好坏,每秒事物处理数(Transactions Per second,TPS)是最重要的指标之一12.2硬件的效率与一致性基于高速缓存的存储交互很好的解决了处理器与内存的速度矛盾,但是也为计算机系统带来了更高的复杂性,引入了新的问题:缓存一致性为了使处理器内部运算单元尽量充分利用,处理器会对输入代码乱序执行优化...原创 2018-08-08 09:20:55 · 541 阅读 · 1 评论 -
深入理解Java虚拟机----第十一章:晚期(运行期)优化
第十一章:晚期(运行期)优化11.1概述为了提高热点代码的运行效率,在运行时,虚拟机会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler ,JIT编译器)java虚拟机规范中没有约束JIT的应该如何实现,所以这部分功能完全是与虚拟机具体实现相关的内容11.2HotSpot虚拟机即时编译...原创 2018-08-08 09:12:13 · 388 阅读 · 0 评论 -
深入理解Java虚拟机----第十章:早期(编译器)优化
第十章:早期(编译器)优化10.1概述Java语言的“编译期”其实是个“不确定”的过程:前端编译器:把Java文件编译成class文件,例如Sun的javac、Eclipse JDT中的增量编译器(ECJ)后端编译器(JIT编译器,just in time compiler):把字节码转换为机器码,例如HotSpotVM的C1、C2编译器静态提前编译(AOT编译器,Ahea...原创 2018-08-07 23:18:05 · 897 阅读 · 1 评论 -
深入理解Java虚拟机----第九章:类加载及其执行子系统的案例与实战
第九章:类加载及其执行子系统的案例与实战9.1概述在class文件格式和执行引擎这部分内容中,用户程序能直接影响的并不多,Class文件以何种形式存储,类型何时加载、如何连接,以及虚拟机如何执行字节码指令都由虚拟机直接控制,用户无发改变;能够通过程序控制的,主要是字节码生成和类加载器两部分9.2案例分析9.2.1Tomcat:正统的类加载架构一个功能健全的web服务...原创 2018-08-07 23:15:28 · 771 阅读 · 0 评论 -
深入理解Java虚拟机----第八章:虚拟机字节码执行引
第八章:虚拟机字节码执行引8.1概述 执行引擎:输入字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果8.2运行时栈帧结构 栈帧:是虚拟机用于方法调用和方法执行的数据结构,是虚拟机运行时数据区的虚拟机栈的栈元素栈帧存储了方法的局部变量表、操作数栈、动态连接、方法返回地址等信息每一个方法从调用开始到执行结束,就是栈帧在虚拟机栈中入栈出栈的过程...原创 2018-08-07 23:13:28 · 585 阅读 · 1 评论 -
深入理解Java虚拟机----第七章:虚拟机类加载机制
第七章:虚拟机类加载机制7.1概述 虚拟机把描述类的数据从class文件加载到内存,经过校验、转换解析、初始化,最形成能够被虚拟机直接使用的java类型,这就是虚拟机的加载过程类的加载、连接、初始化在运行期进行动态扩展的语言特性是依赖于运行期动态加载和动态连接这个特点实现的运行期类加载应用:applet、jsp、osgi7.2类的加载时机 类的加载...原创 2018-08-07 23:09:05 · 607 阅读 · 0 评论 -
深入理解Java虚拟机----第六章:类文件结构
第六章:类文件结构6.1概述计算机只能识别0和1虚拟机以及建立在虚拟机上语言的出现,使编写的程序编译成二进制本地机码(native code)非唯一选择,越来越多编程语言选择了与操作系统和机器指令集无关、平台中立的格式作为程序编译后的存储格式6.2无关性的基石虚拟机可以载入和执行同一种平台无关的字节码各种平台不同的虚拟机和各个平台统一使用的程序存储格式-字节码(By...原创 2018-08-07 23:00:52 · 750 阅读 · 1 评论 -
深入理解Java虚拟机----第五章:调优案例分析与实战
第五章:调优案例分析与实战原创 2018-08-07 22:58:55 · 421 阅读 · 0 评论 -
深入理解Java虚拟机----第四章:虚拟机性能监控与故障处理
第四章:虚拟机性能监控与故障处理原创 2018-08-07 22:56:56 · 371 阅读 · 0 评论 -
深入理解Java虚拟机----第三章:垃圾收集器与内存分配策略
第三章:垃圾收集器与内存分配策略3.1概述 程序计数器、虚拟机栈、本地方法栈 3 个区域随线程生灭(因为是线程私有),栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。而 Java 堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期才知道那些对象会创建,这部分内存的分配和回收都是动态的,...原创 2018-08-07 22:53:28 · 1234 阅读 · 1 评论 -
深入理解Java虚拟机----第二章:Java内存区域与内存溢出异常
第二章:Java内存区域与内存溢出异常2.2运行时数据区域2.2.1 程序计数器(Program Counter Register)概述:一块较小的内存空间,可以看作是当前线程所执行的字节码的 行号指示器作用:通过改变计数器的值来选取下一条需要执行的字节码指令。(分支、循环、跳转、异常处理、线程恢复等)基础功能都依赖与其完成。特点: 1.线程私有,每条线程都需要有一个独...原创 2018-08-07 22:50:36 · 547 阅读 · 1 评论 -
深入理解Java虚拟机----第十三章:线程安全与锁优化
第十三章:线程安全与锁优化13.1概述13.2线程安全 当多个线程访问一个对象的时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的13.2.1Java语言中的线程安全不可变在Java语言里(特指JDK1.5以后),不可变(...原创 2018-08-08 09:23:05 · 489 阅读 · 0 评论