微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JVM学习笔记

  1. 历史

    1. Sun Classic VM,Sun公司的产品,第一款商用Java虚拟机,只用解释器执行java代码
    2. Exact VM,编译器和解释器混合工作。出现时间短,被后来的HotSpot VM替代
    3. HotSpot VM,2007开源,一直用到现在的SDK中
    4. KVM,Sun产品,简单、轻量级,高度可移植。嵌入式设备中使用,如手机。
    5. JRockit VM,2008,BEA开发(被Oracle收购),专注服务端应用
    6. J9 VM,IBM产品
    7. Dalvik,没按JVM规范实现,基于寄存器架构。google产品,Android手机专用
    8. 微软JVM,97年被Sun公司告了之后就退出舞台
    9. Taobao VM,阿里服务器专用。基于HotSpot深度定制,放弃兼容性,拥抱高性能
  2. 内存结构

    1. 线程独占区

      • 程序计数器

        记录着当前线程所执行的字节码的行号
      1. 虚拟机栈

        • 基本元素是栈帧。
        • 栈帧包含:局部变量表、操作数栈、动态链接方法出口
        • 程序中的每一次方法调用都会有一个栈帧存储到虚拟机栈中
      2. 本地方法

        • 同上,是用于native方法
        • HotSpot将虚拟机栈和本地方法栈合并实现
    2. 线程共享区

        1. 存放对象。根据生命周期不同,可分为下列两种区域
        2. 新生代:Eden、Survivor
        3. 老年代:Tenured
      1. 方法

        1. 编译代码的存储区域,存储每个类的结构
        2. 类信息
        3. 运行时常量池
        4. 字段、方法数据
        5. 方法和构造函数代码
    3. 特殊的内存:直接内存

      1. 它不是jvm管理的一部分

      2. 由native方法即C/C++方法申请的
  3. 垃圾回收机制
  4. class文件结构
  5. 类加载机制
  6. 字节码执行引擎
  7. 性能监控工具
  8. 性能调优
  9. 虚拟机编译及运行时优化
  10. Java高级线程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐