概述
一说到 JVM 三个字母,你脑子里首先蹦出来的是什么?我分析一般有以下三种人:
- 第一种:JVM 三个字母,分开我是认识的,一组合,我不知道是啥
- 第二种:他不就是 Java 虚拟机么,跑 Java 程序的
- 第三种:分为堆内存,方法区,老年代,新生代.....巴拉巴拉...,可以跟你说几个小时的
经过我的日常观察,一般第一种人是程序猿的家属,第二种人是程序猿的同事(非 Java 工作的同事),第三种人就是程序猿本猿了,而本文的适合读者是第三种人,我试图从不同的视角出发,带领程序猿们站在另外一个高度点重新全面的重新认识一次 JVM,从浅到深的逐步深入,再一次对我们认知的 JVM 做一个全面的梳理,不仅知道它有堆内存、方法区、老年代、新生代...更要知道其原理,也要知道其使用的方法。在深入理解其设计原理的基础上,再对它进行使用和调优,就会更加的得心应手。
接下来,让我逐步带领大家进入 JVM 的世界!后续我将以 JVM 系列文章的形式,逐步带大家从浅到深的认识 JVM。
声明:以下内容篇幅较长,请耐心看完,你一定会有不一样的收获!
一切从官网开始
那么认识 JVM 的第一步该是什么呢?有很多人第一次认识 JVM 是在百度或者 google 上的,其实第一步你就错了,我认为一切应该还是从官网开始,从它出生的地方先做一个全面的了解。
Java Platform Standard Edition 8 Documentation
官网地址:docs.oracle.com/javase/8/do…
Reference -> Developer Guides -> 定位到:docs.oracle.com/javase/8/do…
Tips:花点时间,耐心的读完这段话,你会有新的心得的!
Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8.
JDK 8 is a superset of JRE 8, and contains everything that is in JRE 8, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE 8 provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language. Note that the JRE includes components not required by the Java SE specification, including both standard and non-standard Java components.
The following conceptual diagram illustrates the components of Oracle's Java SE products:
Getting Started with the G1 Garbage Collector
官网地址:www.oracle.com/technetwork…
Exploring the JVM Architecture
Hotspot Architecture
The HotSpot JVM possesses an architecture that supports a strong foundation of features and capabilities and supports the ability to realize high performance and massive scalability. For example, the HotSpot JVM JIT compilers generate dynamic optimizations. In other words, they make optimization decisions while the Java application is running and generate high-performing native machine instructions targeted for the underlying system architecture.