- 博客(7)
- 资源 (12)
- 收藏
- 关注
原创 即时编译与优化技术
即时编译与优化技术Java程序最初是仅仅通过解释器解释执行的,即对字节码逐条解释执行,这种方式的执行速度相对会比较慢,尤其当某个方法或代码块运行的特别频繁时,这种方式的执行效率就显得很低。于是后来在虚拟机中引入了JIT编译器(即时编译器),当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把...
2018-10-02 16:47:05 798
原创 Javac编译器与语法糖
Javac编译器与语法糖Javac编译过程大致分为3个过程:解析与填充符号表插入式注解器的注解处理过程分析与字节码生成过程###解析与填充符号表词法、语法分析:词法分析是将源代码的字符流转变为标记(Token)集合。 语法分析是根据Token序列来构造抽象语法树的过程。经过这个步骤后,编译器就基本不会再对源码文件进行操作了,后续的操作都建立在抽象语法树之上。填充符号表:符号表是...
2018-10-02 15:18:30 395
原创 方法调用
方法调用当方法调用时会产生一个栈帧,栈帧包含局部变量表,操作数栈,动态连接,方法返回地址和附件信息。每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程中的动态连接。Class文件中的常量池中存在大量的符号引用,字节码中的方法调用指令就以常量池中指向方法的符号引用作为参数。这些符号在类加载阶段或第一次使用时转化为直接引用,这种转化称为静态解析。另外一部分...
2018-10-02 14:35:32 171
原创 类加载机制
类加载机制类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。这7个阶段的发生顺序下图所示:类初始化时机Java规范对类加载时机没有做强制约束,但对类的初始化阶段,严格规定有且只有以下情况必须立即对类“初始化”(而加载等阶段自然需要在初始化之前开始)。1.当虚拟机启动时,初始化用户指定的主类(包含main...
2018-10-01 21:48:00 145
原创 Class类文件结构
Class类文件结构Class文件是一组8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结...
2018-10-01 16:51:02 234
原创 虚拟机性能监控与故障处理工具
虚拟机性能监控与故障处理工具jpsjps是jdk提供的一个查看当前java进程的小工具。常用命令:jps –l:输出主类或者jar的完全路径名jstack找出最耗时的java线程,据此分析代码步骤1.ps -ef | grep java(或者输入服务的名称)2.top -Hp pid1(pid1为需要分析的进程)3.找到pid1中最耗时的线程ID pid2;将pid2...
2018-10-01 10:38:38 161
原创 垃圾收集算法
垃圾收集算法垃圾回收的三种方式标记-清除标记—清除算法是最基础的收集算法,它分为“标记”和“清除”两个阶段:首先标记出所需回收的对象,在标记完成后统一回收掉所有被标记的对象,它的标记过程其实就是前面的可达性分析算法中判定垃圾对象的标记过程。标记—清除算法的执行情况如下图所示:缺点:1.造成内存碎片:标记清除后会产生大量不连续的内存碎片,导致当程序在运行过程中需要分配较大对象时无法找...
2018-10-01 09:51:36 527
深入理解Nginx(Nginx模块开发与架构解析).pdf
2014-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人