
jvm学习
benhuo931115
这个作者很懒,什么都没留下…
展开
-
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——虚拟机类加载机制
虚拟机类加载机制概述虚拟机如何加载Class文件?Class文件中的信息进入到虚拟机后会发生什么变化?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命原创 2017-02-08 10:59:40 · 790 阅读 · 0 评论 -
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——虚拟机字节码执行引擎
虚拟机字节码执行引擎物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式Java虚拟机的执行引擎:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它原创 2017-02-08 15:25:55 · 557 阅读 · 0 评论 -
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——Java类文件结构
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——Java类文件结构1.概述由于计算机只能识别0和1,所以我们编写的程序需经过编译器编译后(二进制格式)才能运行在计算机上,然而随着虚拟机的发展,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为程序编译后的存储格式各种不同平台的虚原创 2017-01-23 10:25:28 · 1241 阅读 · 0 评论 -
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——程序编译与代码优化(一)
早期(编译期)优化Javac的编译过程解析与填充符号表过程插入式注解处理器的注解处理过程分析与字节码生成过程Javac编译动作的入口是com.sun.tools.javac.main.JavaCompiler类,上述3个过程的代码逻辑集中在这个类的compile()和compile2()方法中,其中主体代码如下图所示,整个编译最关键的处理就由图中标注的8个方法来完成解析与填充符号表解析步骤由原创 2017-03-30 11:31:15 · 1498 阅读 · 0 评论 -
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——Java内存模型与线程
Java内存模型与线程多任务处理目的: 1.充分利用计算机处理器的能力(磁盘I/O、网络通信、数据库访问相比计算机的运算速度要慢的多) 2.同时应对多个客户端的请求,衡量一个服务性能的高低好坏,每秒事务处理数(TPS)是最重要的指标之一,它代表着一秒内服务端平均能响应的请求总数,而TPS值与程序的并发能力又有非常密切的关系。对于计算量相同的任务,程序线程并发协调得越有条不紊,效率自然就会越高,反原创 2017-04-10 14:32:27 · 511 阅读 · 0 评论 -
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——晚期(运行期)优化
晚期(运行期)优化概述在部分的商用虚拟机(Sun HotSpot、IBM J9)中,Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为”热点代码”(Hot Spot Code),为了提供热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(JIT编译器)Ho原创 2017-04-01 14:50:10 · 1138 阅读 · 0 评论 -
《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——线程安全与锁优化
线程安全与锁优化线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的线程安全的代码都必须具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己采取任何措施来保证多线程的正确调用Java语言中原创 2017-05-12 19:27:14 · 955 阅读 · 0 评论 -
JVM相关知识总结整理
JVM启动流程JVM基本结构PC寄存器每个线程拥有一个PC寄存器在线程创建时创建指向下一条指令的地址执行本地方法时,PC的值为undefined方法区保存装载的类信息类型的常量池(JDK6时,String等常量池置于方法,JDK7时,已经移动到了堆)字段、方法信息方法字节码通常和永久区(Perm)关联在一起Java堆和程序开发密切相关应用系统对象都保存在Java堆中所有线程原创 2018-02-05 16:34:44 · 576 阅读 · 0 评论