注:本系列为《深入理解Java虚拟机》的读书笔记。
少量来源于网络,视频教材。

如何设计一个虚拟机

假设自己要写一个虚拟机,应该考虑什么?

1
2
3
4
5
虚拟机要运行什么?
如何把规范的文件内容读取到内存中?
读取到内存中的数据如何存储?
如何执行这些规范文件中的数据翻译成操作系统认识的指令?
执行完成后如何清理?

虚拟机的主要功能以及组成

虚拟机要运行代码,这些代码要定制一个规范,这样虚拟机才可以根据制定好的规范去解析和执行。对于Java虚拟机来讲,它要读取的文件就是Class类文件。
我们需要一段代码把Class类文件内容读取到内存中,同时要注意判断,读取的文件内容是否符合Class类文件的规范,同时文件内容是否会危害到虚拟机。
把文件内容读取到内存中后,如何存放、方便管理和使用,同时要保证性能、安全性。
把这些文件内容“翻译”为操作系统认识的指令,并且操控这些指令按照预定的“规则”运行,达到可预期的结果。为了提升效率需要考虑多线程和并发。
执行完成后,清理不需要的内存空间,以便其他程序使用(JVM规范中并没有规定垃圾回收部分)。

JVM虚拟机不包含ClassLoader部分

jvm

虚拟机相关知识传送门

扩展阅读:深入理解Java虚拟机到底是什么

Java虚拟机是一种抽象的计算机,它模拟了一套自己的硬件体系结构(处理器、堆栈、指令集和寄存器)。
不同的平台有着不同的实现版本,屏蔽了平台的差异性。使得不同平台上的虚拟机可以运行被javac编译的同一份.class文件。

关于JVM的面试题:
24个Jvm面试题总结及答案
常见JVM面试题及答案整理
2020年JVM面试题吐血整理【过年必看】
总结的JVM面试题
面试必问的JVM应该怎么学(面试题含答案)
大厂面试经:高频率JVM面试问题整理!
2019年JVM面试都问了什么?快看看这22道面试题!(附答案解析)
JVM 面试题 68 问,面试又可以多扯一个小时了!
【搞定Jvm面试】 Java 内存区域揭秘附常见面试题解析