前言
官网下载的jdk虽然自带java虚拟机,但是java语言规范并没有指定jvm实现,查阅了网络上关于jvm的资料,几乎没有关于jvm实现与jvm规范之间的异同点进行分别说明,大都将jvm规范中的内存结构与HotSpot jvm中实现的java堆中对象的生命周期混/内存模型为一谈,因此在理解jvm的过程中,以下两个问题已知困扰着我:
1、不同的虚拟机之间,java程序的内存模型一样吗?
2、不同的虚拟机之间接受的java参数是否相同?默认的hotspot虚拟机-XX系列参数在其它的jvm中是否也能够使用?
网上的各种教程对上述问题则是语焉不详,在这里要推荐一下周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》,数中详细解释了上述问题以及jvm中的各种细节。
以下内容是我对比周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》与官方的《JVM规范》中的内容后,对《JVM规范》Runtime Data Areas章节的翻译,并加入了个人的整理与理解。
注:本来想就《JVM规范》中的内存结构章节整理出JVM内存结构发展概况,但是在对比了java se6至java se17的相关标准后,发现《JVM规范》并没有对jvm内存结构做出过大的变动,因此本文内容是基于jdk17,感兴趣的可以阅读一下原文:Chapter 2. T