zoukankan      html  css  js  c++  java
  • Java底层学习

    内存分页引入MMU(内存管理单元),利用虚拟地址替代物理地址,MMU将虚拟地址映射为物理地址,引入TLB(页表寄存器缓冲),对页面进行缓存从而提升性能
    http://kenwublog.com/tune-large-page-for-jvm-optimization

    偏向锁可以跳过同步,但是只针对单线程
    http://kenwublog.com/theory-of-java-biased-locking

    java调试体系结构
    1.java虚拟机工具接口(jvmti) 控制当前虚拟机运行状态
    2.java调试线协议(jdwp) 定义命令传输的格式
    3.java调试接口(jdi) 接收调试命令

    Instrumentation 的基本功能和用法
    1.编写premain函数
    2.jar文件打包
    3. java -javaagent:jar 文件的位置 [= 传入 premain 的参数 ]

    ClassFileTransformer可以将class当作字节流替换对应class

    agentmain可以在main方法之后启动
    instrumentation可以动态改变native代码

    BTrace可以动态跟踪代码运行

    编译器的基本结构
    源代码=》词法分析(Token流)=》语法分析(抽象语法树)=》语义分析(注解抽象语法树)。。。

    javac分析和代码生成
    1.属性标注与检查
    2.数据流分析
    3.泛型转换
    4.解语法糖
    5.生成class文件

    javac源码对应
    词法分析:com.sun.tools.javac.parser.Scanner
    语法分析:com.sun.tools.javac.parser.Parser
    将符号输入到符号表:com.sun.tools.javac.comp.Enter
    注解处理:com.sun.tools.javac.processing.JavacProcessingEnvironment
    标注:com.sun.tools.javac.comp.Attr
    检查:com.sun.tools.javac.comp.Check
    数据流分析:com.sun.tools.javac.comp.Flow
    转换类型:com.sun.tools.javac.comp.TransType
    接触语法糖:com.sun.tools.javac.comp.Lower
    生成class文件:com.sun.tools.javac.jvm.Gen

    Class文件信息
    1.结构
    2.元数据
    3.方法信息

    java -Xint 指定以纯解释模式执行
    java -Xcomp指定以纯编译模式执行
    java -Xmixed混合模式,默认

    JVM优化之压缩普通对象指针(CompressedOops)
    通常64位JVM消耗的内存会比32位的大1.5倍,这是因为对象指针在64位架构下,长度会翻倍(更宽的寻址)。
    JVM支持了 -XX:+UseCompressedOops 压缩指针

    热点编译

    JIT编译器通过计数器来触发执行,某方法被调用若干次后(次数可指定)JIT对该方法实现本地方法编译,提升性能,另外可以设定衰减机制,累积仅指定时间内有效
    profiling:解释器收集性能剖析信息

    内联和性能优化有关,但要慎用

    JIT即时编译时,首先将字节码翻译程平台无关的高级中间表示(HIR),然后由代码选择器将HIR转换为平台相关的低级中间表示(LIR),最后发射为可执行的本地代码

    静态单赋值(SSA,Static Single-Assignment):在编译器里用到,是一种高效的数据流分析技术

    c1visualizer:将C1编译器在编译各阶段的数据结构可规化展现出来的工具
    https://c1visualizer.dev.java.net/

  • 相关阅读:
    @transactional注解下失效
    string.format格式化字符串中转义大括号“{}”
    ArrayList循环遍历并删除元素的常见陷阱
    HashMap、HashTable与ConcurrentHashMap区别
    -webkit-,-moz-,-ms-,-o-具体指什么了?
    常用js正则表达式大全
    hashcode详解
    如何区分oracle服务器、oracle客户端、plsql?
    Oracle Client(客户端) 安装与配置
    Openresty使用
  • 原文地址:https://www.cnblogs.com/blogszixin/p/3291501.html
Copyright © 2011-2022 走看看