摘要:
jvm 内存结构和 java 内存模型不是同一个东西 | 线程私有 | 线程共享 | | | | | 程序计数器 | 堆 | | 虚拟机栈 | 方法区 | | 本地方法区 | 堆外内存(Java7的永久代或JDK8的元空间、代码缓存) | ### 程序计数器 + 也叫 PC 寄存器,存储下一条程序行 阅读全文
摘要:
将字节码文件加载到 jvm,并创建对应的字节码对象,然后对其进行验证、初始化等操作 共 5 个阶段:加载、验证、准备、解析、初始化,这里只记录【加载】里的类加载器和双亲委派 ### 加载的是字节码文件 通过类加载器 ClassLoader 把字节码文件在堆中生成代表这个 class 文件的 java 阅读全文
摘要:
### 编译 + 前端编译:依靠 jdk 的编译工具把 java 文件编译成 class 文件,`javac` 命令 + 后端编译:class 文件编译成机器指令 - 逐行读取 class 文件内同,并解释成机器指令 - 引入 `jit` 技术提高解释效率,比如某些类中共有的内容,这些内容解释次数过 阅读全文
摘要:
### 总结 + jvm 是一套规范,只要实现了相关规定就可以视为是一个 jvm,jdk 的是 hotSpot,不同 jdk 版本的 jvm 也有细微差异 + jvm 不仅可以作为 java 的运行环境,还能作为别的语言的运行环境,比如 kotlin、 groovy 等 + java 能跨平台是因为 阅读全文