首页 > 其他分享 >了解JVM

了解JVM

时间:2023-09-18 16:04:39浏览次数:36  
标签:JRE Java 操作系统 虚拟机 了解 JVM 运行

一.了解JVM

1.1什么是JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的,JVM屏蔽了与具体操作系统平台相关的信息,Java程序只需生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改的运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

虚拟机可以分为系统虚拟机和程序虚拟机

系统虚拟机是一种虚拟化技术,它模拟整个计算机硬件环境,包括处理器、内存、存储和外部设备。它的主要目标是在单个物理计算机上同时运行多个操作系统。每个虚拟机都具有独立的操作系统和应用程序,就像在不同的物理计算机上运行一样。系统虚拟机的例子包括VMware、VirtualBox和Hyper-V。

程序虚拟机是一种虚拟化技术,它仅模拟计算机上的一个单独的应用程序运行环境,而不是整个操作系统。它的主要目标是提供一个独立的运行环境,使应用程序能够在不同的操作系统上运行而无需修改。程序虚拟机通常用于解决跨平台兼容性的问题,模拟一个应用程序的运行环境,使应用程序能够跨平台运行。常见的程序虚拟机包括Java虚拟机(JVM)。

1.2JRE/JDK/JVM

JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API)。

JRE(Java Runtime Environment,Java运行环境), 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,主要包括 Java 虚拟机(JVM)、Java 基础类库(Class Library)。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)

JVM(Java Virtual Mechinal)是JRE的一部分,叫做JAVA虚拟机,它是整个java实现跨平台的最核心的部分,负责解释执行并运行字节码文件(.class)。

了解JVM_JVM

1.3JVM的整体结构

了解JVM_运行环境_02

了解JVM_Java_03

ClassLoader:Java 代码编译成二进制后,会经过类加载器,这样才能加载到 JVM 中运行。

Method Area:类是放在方法区中。

Heap:类的实例对象。

当类调用方法时,会用到 JVM Stack、PC Register、本地方法栈。

方法执行时的每行代码是有执行引擎中的解释器逐行执行,方法中的热点代码频繁调用的方法,由 JIT 编译器优化后执行,GC 会对堆中不用的对象进行回收。需要和操作系统打交道就需要使用到本地方法接口。


标签:JRE,Java,操作系统,虚拟机,了解,JVM,运行
From: https://blog.51cto.com/u_16207407/7511341

相关文章

  • 深入了解视频直播美颜sdk技术:实现美颜效果的核心原理
    在当今数字化社交和娱乐的时代,视频直播已经成为人们日常生活中的重要组成部分。从个人博客到专业直播平台,人们都渴望在镜头前呈现出最佳的形象。这就引入了视频直播美颜技术,它不仅改善了主播的外观,还提高了直播观众的观看体验。本文将深入探讨视频直播美颜sdk技术,揭示实现美颜效果......
  • Vue3深度解析:reactive和ref的区别你真的了解吗?
    Vue3中引入了CompositionAPI,其中包含了reactive和ref两个核心函数。这两个函数都是用于创建响应式数据的,但它们之间有一些区别。首先,让我们来看一下reactive函数。reactive函数接受一个普通对象作为参数,并返回一个新的响应式对象。这个响应式对象会跟踪所有属性的变化,并在属性发......
  • 只要了解FPmarkets澳福使用的Renko图表,价格变化还是问题吗
    所有人都在告诉你知道了价格走势变化,就可以在交易市场中盈利,但没有人告诉你如何清晰明了的知道价格走势。其实很简单,只要了解FPmarkets澳福一直在使用的Renko图表,如果不好使,评论区留言,给您充值1000.Renko是一种显示资产价格变动的图表。这是代表价格变化的日本烛台的替代物。Renko......
  • 手把手教你模拟 JVM 内存溢出场景
    Java全能学习+面试指南:https://javaxiaobear.cn今天我们主要自己模拟一个JVM内存溢出的场景。在模拟JVM内存溢出之前我们先来看下这样的几个问题。老年代溢出为什么那么可怕?元空间也有溢出?怎么优化?如何配置栈大小?避免栈溢出?进程突然死掉,没有留下任何信息时如何进......
  • 正则表达式(简单了解)
    正则表达式字符元字符 匹配内容. 匹配除换行符以外的任意字符#掌握\w 匹配字母或数字或下划线 #掌握\s 匹配任意的空白符\d 匹配数字 #掌握\n 匹配一个换行符 #掌握\t 匹配一个制表符\b 匹配一个单词的结尾^ 匹配字符串的开始 #掌握$ 匹配字符......
  • 深入了解信号量:多线程同步的得力工具
    随着计算机科学和软件工程的不断发展,多线程编程变得越来越重要。多线程允许程序同时执行多个任务,提高了程序的效率和性能。然而,多线程编程也引入了新的问题,例如竞态条件和数据竞争。为了解决这些问题,同步工具变得至关重要,而信号量是其中一个强大的工具。什么是信号量?信号量是一......
  • Spring - 1( 相关了解 + IOC 容器 + DI 依赖注入 + )
    Spring-1目录Spring-1了解SpringFramework系统架构系统架构图一、核心容器相关概念存在问题解决引出IOC仍存在问题并引出DI完成目标:充分解耦最终结果IOC入门案例分析实现DI入门案例分析实现IOC相关内容bean配置id、class基础配置name别名配置scope作用范围思考bea......
  • 深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
    什么是倒排索引?有什么好处?倒排索引是一种用于快速检索的数据结构,常用于搜索引擎和数据库中。与传统的正排索引不同,倒排索引是根据关键词来建立索引,而不是根据文档ID。倒排索引的建立过程如下:首先,将每个文档拆分成一系列的关键词或词项,然后建立一个词项到文档的映射。对每个关键词......
  • JVM-CMS分享
    01.垃圾回收算法 垃圾回收算法-种类标记-清除(mark-sweep)标记-压缩(mark-compact)复制算法(copy)分代收集算法(GenerationalGC) 标记-清除(mark-sweep) 原理:     1.标记死亡的对象为空闲内存,并记录在一个空闲链表(free-list)之中。     2.清除确定不可用的对象。缺点: ......
  • 初学者一定要了解的c语言数据类型详解来了
    @TOC前言`一、当我们要描述或者记录一些事物时,通常需要用一些数据来反映它的特征,例如:小明"男""19"岁,身高"1.88"米,在从语言中,要表示这些数据就需要设置合适的数据类型,那么c中数据有哪些类型提供给我使用呢?一、数据类型基本类型整形short//短整型int//整形l......