随着Java技术的不断发展,它被应用于越来越多的领域之中。其中一些领域,如电力、金融、通信等,对程序的性能、稳定性和可扩展性方面都有极高的要求。一个程序很可能在10个人同时使用时完全正常,但是在10000个人同时使用时就会变慢、死锁甚至崩溃。毫无疑问,要满足10000个人同时使用需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件效能无法等比例地提升程序的性能和并发能力,有时甚至可能对程序的性能没有任何改善作用。
这里面有Java虚拟机的原因:为了达到为所有硬件提供一致的虚拟平台的目的,牺牲了一些硬件相关的性能特性。更重要的是人为原因:开发人员如果不了解虚拟机的一-些技术特性的运行原理,就无法写出最适合虚拟机运行和可自优化的代码。
而这个原因也就是为什么现在再市面上,如果你去面试,对于jvm虚拟机以及jvm调优等内容为什么会问得这么多的原因
Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。所以,无论是刚开始学习Java的小新或者已经工作很久最近正在提升找工作的,我想,这张图会对你有不小的帮助
内容主要有以下几点
具体展示
而这些知识点的整理,我主要是从下面这份文档中总结出来的
第一部分 走近Java
第二部分 自动内存管理
在本章,除了对于Java内存区域与内存溢出异常的介绍之外,还详细的介绍了垃圾收集器、虚拟机性能监控、故障处理以及调优实战,对于JVM在“运行”过程中会产生的相关问题进行介绍
第三部分 虚拟机执行子系统
本章主要是对于类的处理,其中包括:类加载器、字节码执行,并且在最后以一个案例进行贯穿,能够更好的对于虚拟机执行子系统进行理解和学习
第四部分 程序编译与代码优化
Java编译器、Hotspot。。。不知道这些东西你是不是听说过,或者自己在这方面学习的还比较透彻的,尤其是一个Hotspot源码,真的是面一个问一个,不是为了难为你,主要是为了能够对你的能力进行一个判定,知道你属于哪一个能力级别,除了安排工作之外,也是对于公司的一个人才储备过程,天知道什么时候会用到这些知识呢
第五部分 高效并发
jvm的学习,或者说面试的时候问到了jvm的相关问题,怎么可能会缺少了多线程与高并发的相关问题,在这里,也单独拿出来一部分,对于高并发的相关内容进行整理,对于这方面之前没有了解的朋友,在这里就可以认真的了解一下
需要这份文档资料的,关注+转发后,私信“资料”即可查看获取方式
附录部分
字节码指令表
Hotspot虚拟机参数
- 写在最后
除了jvm之外,就像这份文档最后一章说的,多线程、高并发等知识点,可能在平时用不到,或者说根本接触不到,但是随着你平台的提升以及互联网的发展,这些可能突然在某一天就会跟mysql一样,成为必须的产品,你不会就只能等着被淘汰,所以想要更好的平台和提升,你只有在平时不断地学习和积累,除此之外没办法
需要这份资料的,添加小助手:msbxq2020免费获取,备注博客园
关注公众号:Java架构师联盟,每日更新技术好文
部分资料已经上传到我的git仓库中:有需要的可以下载
https://gitee.com/biwangsheng/mxq