虚拟机是什么原理(虚拟机原理)

概述

JVM 的内存模型和 JVM 的垃圾回收机制一直是 Java 业内从业者绕不开的话题(实际调优、面试)JVM是java中很重要的一块知识,也是面试常问的问题之一,直至今天,仍然还有许多面试者在被问到Java虚拟机相关问题时,还是一脸懵逼,面试完之后直接被虐哭。今天特分享阿里架构师整理的Java虚拟机底层原理,请签收!

清单

虚拟机是什么原理(虚拟机原理)

由于文章篇幅限制,为了避免影响阅读体验,以下内容已截图展示,需要完整超清版本的可以在文末获取!!!

JVM 内存结构

Java 虚拟机的内存空间分为 5 个部分:

程序计数器Java 虚拟机栈本地方法栈堆方法区虚拟机是什么原理(虚拟机原理)

虚拟机是什么原理(虚拟机原理)

HotSpot 虚拟机对象探秘

在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域:

对象头(Header)实例数据(Instance Data)对齐填充(Padding)虚拟机是什么原理(虚拟机原理)

垃圾收集策略与算法

程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。

而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内存。

虚拟机是什么原理(虚拟机原理)

虚拟机是什么原理(虚拟机原理)

HotSpot 垃圾收集器

HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。

虚拟机是什么原理(虚拟机原理)

内存分配与回收策略

对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置。

虚拟机是什么原理(虚拟机原理)

JVM 性能调优

在高性能硬件上部署程序,目前主要有两种方式:

通过 64 位 JDK 来使用大内存;使用若干个 32 位虚拟机建立逻辑集群来利用硬件资源。虚拟机是什么原理(虚拟机原理)

类文件结构

虚拟机是什么原理(虚拟机原理)

虚拟机是什么原理(虚拟机原理)

类加载的时机

类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下

7 个阶段:

加载验证准备解析初始化使用卸载

验证、准备、解析 3 个阶段统称为连接。

虚拟机是什么原理(虚拟机原理)

类加载的过程

类加载过程包括 5 个阶段:加载、验证、准备、解析和初始化。

虚拟机是什么原理(虚拟机原理)

类加载器

虚拟机是什么原理(虚拟机原理)

如果需要获取上述Java 虚拟机底层原理知识笔记,只需要转发+关注,私信关键词【笔记】即可免费获取!!!

公众号:fuyeying88(长按复制)

本文来自:唐洛,不代表展风网立场!

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