`
nj_link
  • 浏览: 10919 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

jvm学习(笔记)

    博客分类:
  • java
jvm 
阅读更多
1、jvm规范

2、Oracle Jdk 编译机制


  (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:实例化对象
 
  • 大小: 74.3 KB
  • 大小: 21.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics