【JVM】开篇:JVM介绍与知识脉络梳理

转发自:https://blog.csdn.net/a724888/article/details/77992936

          前言:

一、什么是JVM

二、JVM用来做什么事情

三、JVM生命周期

四、JVM的整体架构

五、文章推荐



前言:

JVM(Java Virtual Machine):Java 虚拟机是整个 java 平台的基石,是 java 系统实现硬件无关与操作系统无关的关键部分,是保障用户机器免于恶意代码损害的屏障。

一、什么是JVM

JVM 有如下特点:

(1)基于堆栈的虚拟机 :最流行的计算机体系结构,如英特尔X86架构和ARM架构上运行基于寄存器 。 但是,JVM是基于栈的;

(2)符号引用 :除了基本类型以外的数据(类和接口)都是通过符号来引用,而不是通过显式地使用内存地址来引用;

(3)垃圾收集 :内存自动管理

(4)通过明确界定的基本数据类型的保证平台的独立性 :传统的语言,如C / C ++根据平台有不同的int型的大小。 JVM中明确规定了基本数据类型,以保持它的兼容性和保证平台的独立性;

(5)网络字节顺序 :Java class文件用网络字节码顺序来进行存储:为了保证和小端的Intel x86架构以及大端的RISC系列的架构保持无关性,JVM使用用于网络传输的网络字节顺序,也就是大端。


二、JVM用来做什么事情

基于安全方面考虑,JVM 要求在 class 文件中使用许多强制性的语法和机构化约束,但任意一门功能性语言都可以表示为一个能被 JVM 接受的有效的 class 文件。作为一个通用的、机器无关的执行平台,任何其他语言的实现者都可将 JVM 当作他的语言产品交付媒介。

JVM 中执行以下操作:

  • 加载代码
  • 验证代码
  • 执行代码
  • 提供运行环境

JVM 提供定义了:

  • 存储区
  • 类文件格式
  • 寄存器组
  • 垃圾回收堆
  • 致命错误报告等

三、JVM生命周期

  • 启动:任何一个拥有main函数的class都可以作为JVM实例运行的起点
  • 运行:main函数为起点,程序中的其他线程均由它启动,包括daemon守护线程和non-daemon普通线程。daemon是JVM自己使用的线程比如GC线程,main方法的初始线程是non-daemon。
  • 消亡:所有线程终止时,JVM实例结束生命。

四、JVM的整体架构

先看一下Java代码的执行过程:

五、文章推荐

1、Jvm系列(一):java类的加载机制

第一篇文章讲的是Java类的加载机制,也是我在博客园最收欢迎的Jvm文章,读完之后你会了解什么是类加载器、类加载机制、双亲委派模型等内容。

2、Jvm系列(二):JVM内存结构

这篇文章描述了Java虚拟机的内存结构,内存每个区域作用,如何通过参数对各个区域进行控制。

3、Jvm系列(三):GC算法 垃圾收集器

讲述了Jvm垃圾回收的经典算法,以及各种垃圾回收机制,对象存活判断等。

4、Jvm系列(四):jvm调优-命令篇

这篇文章讲述了如何通过Jvm命令去调优,各Jvm命令使用方法。

5、Jvm系列(五):Java GC分析

这是非常有名的一张图,简单明了展示了GC日志的构成

文章介绍如何分析GC日志来诊断Java项目的运行状态,GC分析是生产调优的重要手段之一。

6、Jvm系列(六):Java服务GC参数调优案例

一名网友根据GC日志,进行Jvm调优的经典案例

7、Jvm系列(七):jvm调优-工具篇

介绍了Jvm调优各种工具的使用

8、Jvm系列(八):jvm知识点总览

如何你只是想通过面试,其实只要看一篇就够了,这篇文章将Jvm中的关键知识点进行了汇总。

9、Jvm系列(九):如何优化Java GC

翻译自国外的一篇Java GC文章,文章详细描述几种GC调优的方式,值得借鉴。

10、Jvm系列(十):教你如何成为Java的OOM Killer

也是线上一场线上Jvm实战调优的经历,看着挺爽。

11、Jvm系列(十一):Java 8-从持久代到metaspace

Java 8 Jvm内存变化。

12、Jvm系列(十二):Java 8的新特性—终极版

杜琪翻译的 Java 8 的新特性。

13、一个脚本引发的血案

我们曾经线上出现事故后,定位分析的经历,结局出乎意料。

猜你喜欢

转载自blog.csdn.net/ZHAOJING1234567/article/details/89074671
今日推荐