java虚拟机JVM简单介绍(可用于面试)

ops/2025/2/12 8:39:18/

JVM即java虚拟机,Java程序运行的时候,编译器会将Java源代码编译成与平台无关的Java字节码文件,而不是直接生成某一特定的机器代码,接下来对应平台的JVM会对字节码文件进行解释,翻译成对应平台的机器指令并运行,这也体现了Java的跨平台特性。

除此之外,还有一以下三个特性:垃圾回收,即时编译,多语言支持。其中垃圾回收是JVM可以自动管理内存,通过垃圾回收机制GC释放不再使用的对象所占用的内存;即时编译,JVM包含一个即时编译器它在运行时将热点代码缓存到 codeCache 中,下次执行的时候不用再一行一行解释,而是直接执行缓存后的机器码,执行效率会提高很多;对于多语言支持为任何可以通过 Java 编译的语言,比如说 Groovy、Kotlin、Scala 等,都可以在 JVM 上运行。

在这顺便扯一扯JVM的内存区域(运行时数据区)可分为程序计数器、虚拟机栈、本地方法栈、堆、方法区等

程序计数器存储下一条要执行的指令的地址,每个线程都有一个独立的程序计数器。

堆:线程共享,存放对象实例和数组,部分空间可通过GC回收。

虚拟机栈:当线程执行一个方法时,会创建一个对应的栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息,然后栈帧会被压入栈中。当方法执行完毕后,栈帧会从栈中移除。生命周期和线程相同。

本地方法栈:本地方法栈与虚拟机栈相似,区别在于虚拟机栈是为 JVM 执行 Java 编写的方法服务的,而本地方法栈是为 Java 调用本地方法服务的,由 C/C++ 编写。在本地方法栈中,主要存放了 native 方法的局部变量、动态链接和方法出口等信息。当一个 Java 程序调用一个 native 方法时,JVM 会切换到本地方法栈来执行这个方法。

方法区:方法区并不真实存在,属于 Java 虚拟机规范中的一个逻辑概念,用于存储已被 JVM 加载的类信息、常量、静态变量、即时编译器编译后的代码缓存等。线程共享。1.8之前由永久代实现,在这之后由元空间实现。元空间和永久代的最大区别是元空间并不在虚拟机中,而是使用本地内存。

然后这里再介绍一下堆和栈的区别:

堆属于线程共享的内存区域,几乎所有 new 出来的对象都会堆上分配,生命周期不由单个方法调用所决定,可以在方法调用结束后继续存在,直到不再被任何变量引用,最后被垃圾收集器回收。

栈属于线程私有的内存区域,主要存储局部变量、方法参数、对象引用等,通常随着方法调用的结束而自动释放,不需要垃圾收集器处理。


http://www.ppmy.cn/ops/157448.html

相关文章

【kafka实战】04 Kafka生产者发送消息过程源码剖析

Kafka生产者发送消息过程源码剖析 1. 概述 Kafka生产者(Producer)是Kafka系统中负责将消息发送到Kafka集群的客户端组件。生产者发送消息的过程涉及多个步骤,包括消息的序列化、分区选择、消息累加、批次发送等。本文将深入剖析Kafka生产者…

C# 线程与同步介绍

.NET学习资料 .NET学习资料 .NET学习资料 在 C# 编程中,线程和同步是实现高效、可靠应用程序的关键概念。随着计算机硬件的发展,多核处理器的普及,充分利用多线程技术可以显著提升应用程序的性能和响应速度。而同步机制则是确保多线程环境下…

C#+Redis接收数据并定时3秒钟频率异步保存到数据库

要在C#中实现从Redis接收数据,并以每3秒的频率异步保存到数据库,你可以使用System.Threading.Tasks.Task.Delay或System.Timers.Timer来创建一个定时任务。不过,对于更复杂的定时和调度需求,System.Threading.Tasks.Timer或Quartz.NET等库可能更合适。 在这个场景中,由于…

打家劫舍3

今天和打家讲一下打家劫舍3 题目: 题目链接:337. 打家劫舍 III - 力扣(LeetCode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了 root 之外,每栋房子有且只有一个“父“…

LM Studio本地调用模型的方法

首先需要下载LM Studio,(LM Studio - Discover, download, and run local LLMs)安装好后,需要对index.js文件进行修改,主要是对相关源hugging face的地址修改。 以macOS为例: cd /Applications/LM\ Studi…

网络安全ITP是什么 网络安全产品ips

DS/IPS都是专门针对计算机病毒和黑客入侵而设计的网络安全设备 1、含义不同 IDS :入侵检测系统(发现非法入侵只能报警不能自己过滤) 做一个形象的比喻:假如防火墙是一幢大楼的门锁,那么IDS就是这幢大楼里的监视系统…

DeepSeekMoE 论文解读:混合专家架构的效能革新者

论文链接:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 目录 一、引言二、背景知识(一)MoE架构概述(二)现有MoE架构的问题 三、DeepSeekMoE架构详解(一&a…

【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践

基于智能优化算法的VMD信号去噪项目实践 一、前言 在信号处理领域,噪声去除是一个关键问题,尤其是在处理含有高斯白噪声的复杂信号时。变分模态分解(VMD)作为一种新兴的信号分解方法,因其能够自适应地分解信号而受到…