jvm学习(笔记)

1、jvm规范
[img]http://dl2.iteye.com/upload/attachment/0106/7321/b82f75ea-14aa-3c53-8c0a-6d5ce50d5265.png[/img]
2、Oracle Jdk 编译机制
[img]http://dl2.iteye.com/upload/attachment/0106/7323/d19efb48-8568-3fd3-8b83-334f3a8a6727.jpg[/img]

(1、词法分析:将代码转token序列(例如Token.EQ(name:=));。语法分析:生成语法抽象树。
(2、注解处理:处理注解生成代码
(3、检查语法抽象树
3、 类加载顺序(classLoader)
self->parent->system->findClass() 没有会报ClassNotFoundException
A加载B,B不在A的classLoader中,会报NoClassDefFoundError
4、堆:存放new出来的对象(新生代、老生代)
5、栈:也就是我们常见的局部变量栈,线程私有,保存线程执行的局部变量表、操作栈、动态连接等。
7. 本地方法栈:包含被虚拟机加载的类、常量、静态变量等数据。(永生代)
8、解释执行:
效率较低,将源码编译为JVM字节码(中间码)。方法运行后会产生程序计数器PC,PC存放下条指令偏移地址。每个方法每次调用都会产生栈帧。栈帧分局部变量区和操作数栈两部分。一个用于存放局部变量和参数,一个用于存放中间结果
jvm优化:栈顶缓存、部分栈帧共享、直接执行机器指令(Math.sin)。
9、编译执行:
效率较高,将字节码编译为机器码执行。jdk对执行频繁的代码用编译执行,执行不频繁的用解释执行。
jvm优化:(C1、C2编译)(1、方法内联(2、去虚拟化,对只有一个方法的类进行内联(3、冗余削除,去掉永远不执行的代码(如if(debug) log.debug("msg"))。(4标量替换(5、栈上分配(6、同步消除
10、classLoader.loadClass调用时才实例化
forName:实例化对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值