【JVM】深入理解虚拟机(上)

简介: 【JVM】深入理解虚拟机(上)

想要学好Java,对Java虚拟机的学习是不可或缺的,本文就来初步的介绍一下虚拟机,了解虚拟机到底是什么样的存在

二话不说先上图

概念解释

自动内存管理机制:Java讲内存控制的权力交给了虚拟机,由虚拟机来解决编码时所需的内存管理需求,从而实现内存管理自动化的机制。这个机制也是程序一旦出现内存泄漏和溢出的问题时,平时不了解虚拟机的程序员,排查错误将异常困难。

虚拟机执行子系统:

执行子系统是虚拟机必不可少的一部分,其过程由编译class文件、类加载过程、虚拟机字节码执行引擎组成。

程序编译和优化: java程序从源码编译成字节码,再从字节码编译成本地机器码即传统编译器的编译过程,优化也是从这两个部分开始的。

高效并发: java天生适合多线程,高效并发是JVM学习的重要部分

什么是JVM

虚拟机

首先说说什么是虚拟机吧,虚拟机(Virtual Machine)就是一台虚拟的主机,实质上是一款软件,可以用来执行一系列虚拟计算机执行,分为系统虚拟机和程序虚拟机,而Java虚拟机就属于程序虚拟机,它专门为执行单个计算机程序而设计

Java虚拟机

Java虚拟机是一台执行Java字节码的虚拟计算机,他拥有独立的运行机制,其中运行的Java字节码也不一定是有Java编译

JVM平台的各种语言都可以共享JVM的福利,现在java虚拟机已经不再为java一家服务。

Java技术的核心就是Java虚拟机,所有java程序都运行在java虚拟机内部

JVM内存结构

根据JVM规范,JVM内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分

  1. 虚拟机栈
    线程私有,每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态链接,方法返回地址等

  2. 线程共享,被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例
  3. 方法区
    线程共享;被所有线程共享的一块内存区域,用于存储已被虚拟机加载的类信息,常量,静态变量等。
  4. 程序计数器
    线程私有,使当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也被称为线程私有的内存
  5. 本地方法栈
    线程私有,主要为虚拟机使用到的Native方法服务。

JVM运行过程

由编译的xxx.java源码通过Java编译器的词法分析、语法分析、语义分析、字节码生成器等过程生成xxx.class字节码文件,然后通过类加载器从文件系统或网络中加载Class文件,通过一系列诸如验证、初始化等过程,存放到内存中的方法区,由虚拟机字节码执行引擎执行代码,输入字节码文件,通过字节码解析输出执行结果。

本文主要参考该书:

另:本文有些内容属于JDK1.7,在jdk1.8中,常量池已经挪到了堆中,请注意。

目录
相关文章
|
2天前
|
存储 Java 编译器
JVM系列7-虚拟机字节码执行引擎
JVM系列7-虚拟机字节码执行引擎
9 1
|
14天前
|
存储 安全 Java
深入探究Java虚拟机(JVM)的技术细节
深入探究Java虚拟机(JVM)的技术细节
|
15天前
|
存储 算法 Java
深入理解Java虚拟机(JVM)的垃圾回收机制
【5月更文挑战第30天】 在Java开发领域,垃圾回收(Garbage Collection, GC)是确保应用程序性能和内存效率的关键因素。本文将深入探讨Java虚拟机(JVM)的垃圾回收机制,解析其工作原理、不同算法的特点以及如何通过调优来提高应用性能。我们将透过JVM的内存结构,探索垃圾回收过程中涉及的关键技术点,并讨论现代Java应用中常见的垃圾回收器实现。
|
18天前
|
存储 Java 开发者
深入理解Java虚拟机:JVM内存模型解析
【5月更文挑战第27天】 在Java程序的运行过程中,JVM(Java Virtual Machine)扮演着至关重要的角色。作为Java语言的核心执行环境,JVM不仅负责代码的执行,还管理着程序运行时的内存分配与回收。本文将深入探讨JVM的内存模型,包括其结构、各部分的作用以及它们之间的相互关系。通过对JVM内存模型的剖析,我们能够更好地理解Java程序的性能特征,并针对性地进行调优,从而提升应用的执行效率和稳定性。
|
18天前
|
Oracle Cloud Native Java
【JVM】初步认识Java虚拟机
【JVM】初步认识Java虚拟机
26 6
|
20天前
|
存储 算法 Java
深入解析Java虚拟机(JVM):技术原理与性能优化
深入解析Java虚拟机(JVM):技术原理与性能优化
30 1
|
30天前
|
存储 缓存 安全
深入浅出JVM(三)之HotSpot虚拟机类加载机制
深入浅出JVM(三)之HotSpot虚拟机类加载机制
|
30天前
|
存储 缓存 算法
深入浅出JVM(一)之Hotspot虚拟机中的对象
深入浅出JVM(一)之Hotspot虚拟机中的对象
|
30天前
|
Oracle Java Serverless
JVM工作原理与实战(三十六):GraalVM虚拟机
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了GraalVM、GraalVM的两种运行模式、GraalVM应用场景、参数优化和故障诊断等内容。
38 1
|
30天前
|
存储 监控 安全
JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了运行时数据区、Java虚拟机栈等内容。
19 0