《深入理解JAVA虚拟机-第三版》读书笔记

285 阅读2分钟

第一章 走进JAVA

  1. 概述 应用广泛、结构严谨、跨平台
  2. JAVA技术体系
  • JAVA程序设计语言
  • 各种硬件平台的JAVA虚拟机实现
  • Class文件格式
  • JAVA类库API
  • 商业或开源的第三方JAVA类库
  1. JAVA发展史 JDK1.1 -> JDK 1.2 -> JDK1.3 ....
  2. JAVA虚拟机家族
  • 始祖:Sun Classic/Exact VM
  • 武林盟主:HotSpot VM
  • 小家碧玉:Moblie/Embedded VM
  • 天下第二:BEA JRockit/IBM J9 VM
  • 软硬合璧:BEA Liquid VM/Azul VM
  • 挑战者:Apache Harmony/Google Android Dalvaik VM
  • 没有成功,并非失败:Microsoft JVM以及其他
  • 百家争鸣
  1. 展望JAVA技术的未来
  • 无语言倾向
  • 新一代即时编译器
  • 向Native迈进
  • 灵活的胖子HotSpot
  • 语言语法持续增强
  1. 实战:自己编译JDK
  2. 本章小结 介绍JAVA的过去、现在、未来,和编译JDK12

第二章 JAVA内存区域与内存溢出异常

  1. 概述

  2. 运行时数据区域 运行时数据区域

  • 程序计数器

    当前线程所执行的字节码的行号指示器,程序控制流的指示器,分支、跳转、循环、异常处理、线程恢复等都需要依赖程序计数器 程序计数器线程独立,各条线程之间计数器互不影响,独立存储,线程私有

  • JAVA虚拟机栈

    线程私有 生命周期与线程相同 方法执行时,会创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等,方法被调用到执行完毕,对应栈帧入栈出栈

  • 本地方法栈

    与虚拟机栈类似,是为虚拟机使用到的本地方法服务,有的虚拟机将两者合二为一

  • JAVA堆

    线程共享的内存区域 几乎所有对象在这里分配内存

  • 方法区

    线程共享的内存区域 存储被虚拟机加载的类型信息、常量、静态变量、即使编辑的代码缓存等

  • 运行时常量池

    方法区的一部分,存放常量池表

  • 直接内存

    不是运行时数据区的一部分,NIO直接分配内存

  1. HotSpot虚拟机对象探秘

  2. 实战:OutOfMemoryException异常

  3. 本章小结

未完待续...