zoukankan      html  css  js  c++  java
  • 《深入理解java虚拟机》

      上一章讲到了类的加载机制,主要有传统派的 双亲委派模型 和 现代主义激进派的 osgi 类加载器。接下来继续。

    第8章  虚拟机字节码执行引擎

      局部变量表,用于存储方法参数和方法内部定义的局部变量。

      操作数栈,其实书上解释的糊里糊涂的,个人理解一下,主要是因为cpu寄存器太少,而又要进行各种子方法的调用,那么为了保存外部的一些寄存器值,所以使用了操作数栈。进入子方法的时候,先入栈保存起来,退出时再一个个弹出栈回原来的寄存器。

      动态连接,在每一次运行期间转化为直接引用的操作。

      基于栈的字节码解释执行。

      java中提供了5个方法调用字节码指令,invokestatic 调用静态方法。invokespecial 调用实例构造器<init>方法、私有方法和父类方法 ,invokevirtual 调用所有的虚方法,invokeinterface 调用接口方法,在运行时再确定一个实现此接口的对象,这给我们面向接口编程提供了能力。invokedynamic 先在运行时动态解析出调用点限定符所引用的方法,再执行该方法。javap -c  a 可查看字节码。

      虚拟机动态分派的实现为,在类的方法区中建立一个虚方法表vtable,使用虚方法表索引来代替元数据查找从而提高性能。

      tomcat 类加载器

        osgi 类加载器

      字节码生成技术和动态代理的实现。

      可以使用 retrotranslator 将高版本里写的代码,编译回低版本的运行环境中,原理就是写一些高版本里自代的方法替换到低版本中。

    第10章  编译期优化

      javac 源码与调试,javac编译器是用java语言实现的,可以直接阅读其源码。

      java 语法糖,语法糖就是,表面看起来牛b,实际并没什么卵用的东西。其实主要是为了提高开发效率,以及减少犯错的机会的辅助性语法。如 泛型、自动拆装箱。。。

    第11章  运行期优化

      运行期的热点代码,将会被编译成平台相关的机器码,从而提高性能。

      热点代码分,被多次调用的方法、被多次执行的循环体。

      方法计数器触发即时编译;

      回边计数器触发即时编译

      client compiler 架构

      使用 +XX printcompilation可以将编译的方法打印出来。printinlining。-XX : +printcompilation 。

     第12章  java内存模型与线程

      处理器、高速缓存、主内存间的交互关系

      处理器可能会对输入代码进行乱序执行优化。而java虚拟机的即时编译也可能进行指令重排序优化。

      java主内存与工作内存的交互关系

      java主内存与工作内存的交互协议,定义了8个操作,每一个都是原子性的。

      lock 锁定

      unlock 解锁

      read 读取,和load 连贯操作

      load 载入

      use 使用

      assign 赋值

      store 存储,和write 连贯操作

      线程的实现,使用内核线程实现,使用用户线程实现,混合实现

      

      使用内核线程

      使用用户线程

      混合实现

      java线程有10优先级, Thread.MIN_PRIORITY, Thread.MAX_PRIORITY,针对windows的7个优先级,做重叠处理。

      java线程状态转换

    第13章  线程安全与锁优化

      不可变的对象一定是线程安全的。

      synchronized ,reentrantlock,threadlocalmap。

      锁优化,适应性自旋锁 adaptive spinning,锁消除 lock elimination,锁粗化 lock coarsening,轻量级锁  lightweight locking,偏向锁 biased locking。

      额。。。

  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/yougewe/p/7997390.html
Copyright © 2011-2022 走看看