scala_【JVM】概述

快速了解JVM

Scala是一门运行在Java虚拟机(JVM)上的编程语言,这意味着它可以无缝地运行在现有的Java环境中,并兼容现有的Java程序‌,Scala的源代码被编译成Java字节码,因此可以在JVM上运行,并能够调用现有的Java类库‌

JVM

(Java Virtual Machine),即Java虚拟机,是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现Java程序的运行‌

‌定义与实质‌

JVM是Java的运行环境,它负责将Java字节码转换为特定操作系统上的机器指令,并管理程序的运行时环境
JVM是一种用于计算设备的规范,它定义了一个抽象的机器或处理器,以及相应的指令系统‌

特点与优势

  • 平台无关性
    • JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在JVM上运行的目标代码(字节码),就可以在多种平台上不加修改地运行
  • 跨平台性
    • 任何平台只要装有针对于该平台的JVM,字节码文件(.class)就可以在该平台上运行,实现了"一次编译,多次运行"的特性
  • ‌自动内存管理
    • JVM具有自动内存管理机制,如垃圾回收等,减轻了程序员的内存管理负担,并降低了内存泄漏或内存溢出的风险

‌结构与组成

  1. ‌类加载器(ClassLoader)
    • 负责查找并加载类文件的字节码,转换成JVM能理解的数据结构,并存储在方法区中
  2. 运行时数据区(Runtime Data Area)
    • 是JVM内存管理的重要部分,JVM在执行Java程序时用于存储数据的主要区域。它包括了方法区(Method Area)、Java堆(Heap)、虚拟机栈(Stack)、程序计数器(Program Counter)和本地方法栈(Native Method Stack)等部分‌
      • 方法区‌:存储已被加载的类信息、常量、静态变量等数据
      • Java堆‌:存储对象实例,是垃圾回收的主要区域
      • 虚拟机栈‌:存储局部变量表、操作数栈、动态链接、方法出口等信息,是线程私有的
      • 程序计数器‌:存储当前线程执行的字节码行号,是线程私有的,且不会出现OutOfMemoryError
      • 本地方法栈‌:与虚拟机栈类似,但为Native方法服务
  3. ‌执行引擎(Execution Engine)
    • 也叫解释器,负责解释或编译字节码,执行Java程序,包含解释器、即时编译器(JIT)等组件
  4. 本地库接口(Native Interface)
    • 与native lib(本地方法库)交互,融合其他编程语言为Java所用,它是JVM与其他编程语言交互的接口,允许Java程序调用用其他语言编写的本地方法‌

‌运行流程

  1. 编写Java源代码,并保存为.java文件
  2. 使用Java编译器(如javac)将.java文件编译成Java字节码,存储在.class文件中
  3. 当Java程序运行时,JVM通过类加载器加载这些.class文件,并进行链接和初始化
  4. 加载完成后,JVM将字节码提交给执行引擎进行执行,执行引擎可以通过解释器逐条解释执行字节码,也可以通过即时编译器将部分字节码转换成本地机器码以提高效率‌
相关推荐
武子康4 小时前
Java-171 Neo4j 备份与恢复 + 预热与执行计划实战
java·开发语言·数据库·性能优化·系统架构·nosql·neo4j
无敌最俊朗@4 小时前
02-SQLite 为了防止多人同时乱写,把整个数据库文件“当一本账本加锁”
jvm·数据库·oracle
怪兽20145 小时前
fastjson在kotlin不使用kotlin-reflect库怎么使用?
android·开发语言·kotlin
ClearLiang5 小时前
Kotlin-协程的挂起与恢复
开发语言·kotlin
彭同学学习日志5 小时前
Kotlin Fragment 按钮跳转报错解决:Unresolved reference ‘floatingActionButton‘
android·开发语言·kotlin
海域云赵从友5 小时前
破解跨境数据传输瓶颈:中国德国高速跨境组网专线与本地化 IP 的协同策略
开发语言·php
咚咚王者5 小时前
人工智能之编程进阶 Python高级:第九章 爬虫类模块
开发语言·python
深蓝海拓5 小时前
使matplot显示支持中文和负号
开发语言·python
syt_biancheng6 小时前
Day3算法训练(简写单词,dd爱框框,3-除2!)
开发语言·c++·算法·贪心算法
864记忆6 小时前
Qt Network 模块中的函数详解
开发语言·网络·qt