Java 虚拟机,是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。
跨平台的是 Java 程序(包括字节码文件),,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM 。

JVM 组成部分

类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中。
内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者 PC 指针的记录器等。
执行引擎,执行引擎的任务是负责执行 class 文件中包含的字节码指令,相当于实际机器上的 CPU 。
本地方法调用,调用 C 或 C++ 实现的本地方法的代码返回结果。
好吧,下面来看看JVM的知识点梳理!
注意注意:无论是下面分享的JVM知识点梳理,还是学习路线,学习笔记,或者真题解析,都可以免费分享出来跟大家一起学习,可以前往共重号:爱穿格子衫的程序猿 领取!
1、类加载器
加载
验证
准备
解析
初始化

2、对象的创建过程
检查类是否被加载
为对象分配内存
为分配的内存空间初始化零值
为对象进行其他设置
执行 init 方法

3、对象的内存布局
对象头(markword)
实例数据(Instance Data)
对其填充(Padding)
预估对象大小

4、对象访问
句柄访问
直接指针
5、JVM 内存区域
虚拟机栈
本地方法栈
程序计数器
本地内存
堆

6、对象存活判断
引用计数
可达性分析
finalize
对象引用类型
7、垃圾回收算法
标记-清除
标记-整理
复制算法
分代算法

8、安全点
安全点
安全区域
9、JVM 垃圾回收器
Serial (新生代)
ParNew(新生代)
Parallel Scavenge(新生代)
Serial Old(老年代)
Parallel Old(老年代)
CMS(Concurrent Mark Sweep)(老年代)
G1
ZGC


给大家介绍一本学习书籍《Java虚拟机:JVM高级特性与最佳实践》454页的PDF,分为5个部分:走近java、启动内存管理机制、虚拟机执行子系统、程序编译与代码优化、高效并发。

说到这个笔记,前些日子我自己还整理了一份JVM的笔记,也拿出来分享一下吧。这份JVM笔记我主要是分成了十个模块:(1)JVM 内存结构、(2)HotSpot 虚拟机对象探秘、(3)垃圾收集策略与算法、(4)HotSpot 垃圾收集器、(5)内存分配与回收策略、(6)JVM 性能调优、(7)类文件结构、(8)类加载的时机、(9)类加载的过程、(10)类加载器

下面这些是我总结的一些面试常问的题目并附带解析:
内存模型以及分区,需要详细到每个区放什么?
堆里面的分区:Eden,survival (from+ to),老年代,各自的特点?
对象创建方法,对象的内存分配,对象的访问定位?
GC 的两种判定方法?
SafePoint 是什么?
GC 收集器有哪些?CMS 收集器与 G1 收集器的特点?
Minor GC 与 Full GC 分别在什么时候发生?
几种常用的内存调试工具:jmap、jstack、jconsole、jhat?
类加载的几个过程?
JVM 内存分哪几个区,每个区的作用是什么?
如和判断一个对象是否存活?(或者 GC 对象的判定方法)?
简述 java 垃圾回收机制?
java 中垃圾收集的方法有哪些?
java 内存模型?
java 类加载过程?
简述 java 类加载机制?
类加载器双亲委派模型机制?
什么是类加载器,类加载器有哪些?
简述 java 内存分配与回收策率以及 Minor GC 和 Major GC?
... ...
详细解析如下,篇幅原因就不一一给出答案了,不过以上说的这些都有整理成文档,需要的话可以前往共重号:爱穿格子衫的程序猿 获取~

面试问到JVM恐怕早已是家常便饭了吧,也许你正在准备着和面试官过招,那么正好,我这份JVM面试速补:知识点梳理+学习路线+学习笔记+真题解析,全部分享给你够不够呢?够不够你轻松手撕面试官?
好吧,好像废话有点多,点到为止吧,有需要可以前往共重号:爱穿格子衫的程序猿 即可下载!!!