阿里P8写出的《深入理解Java虚拟机3》轻松学会JVM底层

简介: 前言Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三E方Java框架(如Spring、 MyBatis等) 构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富,相比而言,有关Java虚拟机的资料却显得异常贫乏。

网络异常,图片无法展示
|

前言

Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三E方Java框架(如Spring、 MyBatis等) 构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富,相比而言,有关Java虚拟机的资料却显得异常贫乏。

随着Java技术的不断发展,它已被应用于越来越多的领域之中。其中一些领域,如互联网、能源、金融、通信等,对程序的性能、稳定性和扩展性方面会有极高的要求。一-段程序很可能在10个人同时使用时完全正常,但是在10000个人同时使用时就会缓慢、死锁甚至崩溃。毫无疑问,要满足10000个人同时使用,需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件性能无法等比例提升程序的运行性能和并发能力,甚至有可能对程序运行状况没有任何改善。这里面有Java虚拟机的原因:为了达到“所有硬件提供一致的虚拟平台”的目的,牺牲了- -些硬件相关的性能特性。更重要的是人为原因:如果开发人员不了解虚拟机诸多技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。

让我们一起走进虚拟机的世界吧!


一、走进Java

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。

1.1概述

1.2 Java技术体系

1.3 Java发展史

1.4 Java虚拟机家族

1.5展望J ava技术的未来

1.6实战:自己编译JDK

1.7本章小结

网络异常,图片无法展示
|

网络异常,图片无法展示
|

二、自动内存管理

Java与C+ +之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。

第2章Java内存区域与内存溢出异常

2.1概述

2.2运行时数据区域

2.3 HotSpot虚拟机对象探秘

2. 4实战: 0utOfMem oryErr or异常

2.5本章小结

网络异常,图片无法展示
|

第3章垃圾收集器与内存分配策略

3.1概述

3.2对象已死?

3.3垃圾收集算法

3.4 HotSp ot的算法细节实现

3.5经典垃圾收集器

3.6低延迟垃圾收集器

3.7选择合适的垃圾收集器

3.8实战:内存分配与回收策略

3.9小结

网络异常,图片无法展示
|

第4章虚拟机性能监控、故障处理工具

4.1概述

4.2基础故障处理工具

4.3可视化故障处理工具

4.4 HotSpot虚拟机插件及工具

4.5本章小结

网络异常,图片无法展示
|

第5章调优案例分析与实战

5.1概述

5.2案例分析

5.3实战: Eclipse运行速度调优

5.4本章小结

网络异常,图片无法展示
|

三、虚拟机执行子系统

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一-小步,却是编程语言发展的一大步。

第6章:类文件结构

6.1概述

6.2无关性的基石

6.3 Class类文件的结构

6.4字节码指令简介

6.5公有设计,私有实现

6.6 Class文件结构的发展

6.7本章小结

网络异常,图片无法展示
|

第7章:虚拟机类加载机制

7. 1概述

7.2类加载的时机

7.3类加载的过程

7.4类加载器

7.5 Java模块化系统

7.6本章小结

网络异常,图片无法展示
|

第8章:虚拟机字节码执行引擎

8.1概述

8.2运行时栈帧结构

8.3方法调用

8.4动态类型语言支持

8.5基于栈的字节码解释执行引擎

8.6本章小结

网络异常,图片无法展示
|

第9章:类加载及执行子系统的案例与实战

9.1概述

9.2案例分析

9.3实战:自己动手实现远程执行功能

9.4本章小结

四、程序编译与代码优化

从计算机程序出现的第一天起, 对效率的追逐就是程序员天生的坚定信仰,这个过程犹如一场没有终点、永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。

第10章:前端编译与优化

10. 1概述

10.2 Javac编译器

10.3 Java语法糖的味道

10. 4实战:插入式注解处理器

10. 5本章小结

网络异常,图片无法展示
|

第11章:后端编译与优化

11. 1概述

11.2即时编译器

11.3提前编译器

11.4编译器优化技术

11.5实战:深入理解Gr aal编译器

11.6本章小结

网络异常,图片无法展示
|

五、高效并发

第12章:Java内存模型与线程

并发处理的广泛应用是AmdahI定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力的最有力武器。

12.1概述

12.2硬件的效率与一致性

12.3 Java内存模型

12. 4 Java与线程

12.5 Java与协程

12.6本章小结

网络异常,图片无法展示
|

第13章:线程安全与 锁优化

我们了解虚拟机Java内存模型的结构及操作,并且讲解了原子性、可见性、有序性在Java内存模型中的体现,介绍了先行发生原则的规则及使用。另外,我们还了解了线程在Java语言之中是如何实现的,以及代表Java未来多线程发展的新并发模型的工作原理。

关于“高效并发"这个话题,在本章中主要介绍了虚拟机如何实现“并发”在下一章中,我们的主要关注点将是虚拟机如何实现"高效”,以及虚拟机对我们编写的并发代码提供了什么样的优化手段。

13.1概述

13.2线程安全

13.3锁优化

13.4本章小结

网络异常,图片无法展示
|

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
1月前
|
Java
jvm复习,深入理解java虚拟机一:运行时数据区域
这篇文章深入探讨了Java虚拟机的运行时数据区域,包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、元空间和运行时常量池,并讨论了它们的作用、特点以及与垃圾回收的关系。
62 19
jvm复习,深入理解java虚拟机一:运行时数据区域
|
1月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
31 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
22天前
|
存储 算法 Java
Java虚拟机(JVM)的内存管理与性能优化
本文深入探讨了Java虚拟机(JVM)的内存管理机制,包括堆、栈、方法区等关键区域的功能与作用。通过分析垃圾回收算法和调优策略,旨在帮助开发者理解如何有效提升Java应用的性能。文章采用通俗易懂的语言,结合具体实例,使读者能够轻松掌握复杂的内存管理概念,并应用于实际开发中。
|
1月前
|
存储 算法 Java
深入理解Java虚拟机(JVM)及其优化策略
【10月更文挑战第10天】深入理解Java虚拟机(JVM)及其优化策略
41 1
|
1月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
41 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
2月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
2月前
|
安全 前端开发 Java
浅析JVM invokedynamic指令与Java Lambda语法的深度融合
在Java的演进历程中,Lambda表达式无疑是Java 8引入的一项革命性特性,它极大地简化了函数式编程在Java中的应用,使得代码更加简洁、易于阅读和维护。而这一切的背后,JVM的invokedynamic指令功不可没。本文将深入探讨invokedynamic指令的工作原理及其与Java Lambda语法的紧密联系,带您领略这一技术背后的奥秘。
28 1
|
3月前
|
小程序 JavaScript Java
【资料】阿里Java开发手册
本文是关于分享阿里Java开发手册资源及促进编程规范学习的指南。作者以个人经历引入,讲述了公司领导通过细致讲解阿里Java开发手册,提升了团队对代码质量和编程规范的认识
793 0
【资料】阿里Java开发手册
|
3月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
295 0
|
3月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
58 0