虚拟机角度下的线程

news2024/11/19 9:21:51

虚拟机角度下的线程

jvm与线程

一个 Java 应用程序通常只包含一个 JVM 进程(Java Virtual Machine,Java虚拟机),但在某些情况下可能会有多个 JVM 进程。 一个 Java 应用通常是一个进程,这个进程就是jvm,编译好的class文件丢到jvm中,执行时就成为了诸多线程(网络请求过来时,也会生成相应的线程去处理请求)。当运行一个 Java 程序时,操作系统会创建一个 JVM 进程,该进程会解释和执行 Java 代码,从而运行您的程序。 ——我们编写的Java程序运行在一个jvm上面,一个jvm囊括了所有的线程,所有的需求都是由线程完成的。

jvm中的线程

来看一下线程在jvm中是如何存在的:

下图为虚拟机中的运行时数据区:

 在其中:方法区、堆是公共的,虚拟机栈、pc寄存器(程序计数器)、本地方法栈是线程私有的。

为什么是私有的?(八股)

  1. 虚拟机栈:每个线程在执行Java程序时都需要有自己独立的虚拟机栈,用于存储方法调用时的局部变量表、操作数栈、动态链接、方法出口等信息。因为每个线程执行的方法可能不同,所以虚拟机栈需要根据具体的线程和方法进行动态分配和释放。如果虚拟机栈是共享的,就会导致不同线程之间的方法调用信息相互干扰,严重影响程序的正确性和可靠性。

  2. 程序计数器:每个线程在执行Java程序时都需要有自己独立的程序计数器,用于记录当前线程正在执行的指令的地址。程序计数器是线程私有的,因为不同的线程可能在同时执行不同的方法,如果多个线程共享同一个程序计数器,就会导致多个线程互相干扰,无法正确执行。

  3. 本地方法栈:本地方法栈用于执行本地方法(由其他语言编写的方法),与虚拟机栈类似,它也包含局部变量表、操作数栈、动态链接、返回地址等信息。每个线程在执行本地方法时都需要有自己独立的本地方法栈,因为本地方法的调用与Java方法的调用有很大的不同之处,需要有独立的栈空间进行管理。如果本地方法栈是共享的,就会导致不同线程之间的本地方法调用信息相互干扰,严重影响程序的正确性和可靠性。

总之,虚拟机栈、程序计数器、本地方法栈都是线程私有的内存区域,每个线程都需要有自己独立的栈空间进行管理,以保证程序的正确性和可靠性

堆和方法区

堆和方法区(元空间)是所有线程共享的资源,其中堆是进程中最大的一块内存,主要用于存放新创建的对象 (几乎所有对象都在这里分配内存),方法区主要用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从Cookie到Session: Servlet API中的会话管理详解

文章目录 一. Cookie与Session1. Cookie与Session2. Servlet会话管理操作 二. 登录逻辑的实现 一. Cookie与Session 1. Cookie与Session 首先, 在学习过 HTTP 协议的基础上, 我们需要知道 Cookie 是 HTTP 请求报头中的一个关键字段, 本质上是浏览器在本地存储数据的一种机制,…

基本类型转换和引用类型转换

文章目录 前言基本类型转换自动数据类型转换强制数据类型转换 引用数据类型转换向上转型向下转型 前言 提示:这里可以添加本文要记录的大概内容: Java 中的类型转换可以分为基本类型转换和引用类型转换两种。 基本类型转换指的是将一种基本数据类型转换…

Koa学习3:用户添加、错误处理

模型 在src目录下创建model目录,用来存放模型 创建用户模型 user.model.js 注意: UUID类型是无法自增的,将id设置为UUID类型时只需要为其指定默认值即可 // 数据类型 const { DataTypes } require(sequelize); // 导入已经连接了数据库…

集合导题、刷题、考试全套完整流程,专业强大的功能,提高刷题学习效率和企业的培训效率

土著刷题微信小程序v1.15,主要是迭代了考试模块的进阶功能,对考试模块进行了一次升级改造。 由于在v1.15开发期间,收到了违规内容整改的通告,为了遵守相关法律法规,让小程序能够平稳安全地运营下去,我们特此…

我说用count(*)统计行数,面试官让我回去等消息...

前言 1 count(*)为什么性能差? 2 如何优化count(*)性能? 2.1 增加redis缓存 2.2 加二级缓存 2.3 多线程执行 2.4 减少join的表 2.5 改成ClickHouse 3 count的各种用法性能对比 前言 最近我在公司优…

Consul单机集群

一、准备工作 1、下载consul consul各版本下载地址,点击如下连接前往: Consul Versions | HashiCorp Releases 本案例使用版本:Consul v1.15.0 ;下载的文件解压皆可,consul为可执行文件。 2、创建目录&#xff1a…

移动安全app渗透测试之渗透流程、方案及测试要点讲解

被产品经理分到了个app测试的活,(话说为啥是产品经理给派活,我不是归技术总监管么),包含安卓端的和ios端的,有点懵逼,说好的web渗透测试和服务器端渗透测试呢,虽然懵逼,不…

【V4L2】v4l2框架分析之video_device

文章目录 🔺一、video_device分析(1-1)struct video_device结构(1-2)struct v4l2_ioctl_ops结构(1-3)v4l2_file_operations结构 🔺二、注册video设备🔺三、卸载清除video…

华为OD机试真题B卷 JavaScript 实现【自守数】,附详细解题思路

一、题目描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 625,76^2 5776,9376^2 87909376。请求出n(包括n)以内的自守数的个数。 数据范围: 1≤n≤10000 二、输入描述 int型整数。 三、输出描述 n以内…

Maven了解及使用

套用一下常用的what, why, how 对maven进行了解。 首先,what? maven是什么? 1、Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecy…

《C# 教程》菜鸟教程学习笔记

学习地址 ######C#有用的网站 C# Programming Guide - 介绍了有关关键的 C# 语言特征以及如何通过 .NET 框架访问 C# 的详细信息。Visual Studio - 下载作为 C# 集成开发环境的 Visual Studio 的最新版本。Go Mono - Mono 是一个允许开发人员简单地创建跨平台应用程序的软件平台…

I.MX6ull GPT高精度定时器

一 简介 GPT的全称是General Purpose Timer,它是一个32位的向上的定时器, GPT 定时器也可以跟一个值进行比较,当计数器值和这个值相等的话就发生比较事件,产生比较中断。GPT 定时器有一个 12 位的分频器,可以对 GPT 定…

sqli-labs靶场通关(1-10)

这次的靶场主要为sql注入的练习,在练习靶场前我们需要了解以下mysql数据库。 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储,可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统,按照一定的…

2023年腾讯云618年中大促活动整理汇总

2023年腾讯云618年中大促活动正在进行中,目前正是腾讯云最优惠的时候,小编给大家整理汇总了腾讯云618活动时间、活动入口、活动内容,大家记得抓住上云好时机! 一、2023年腾讯云618活动时间 2023年05月25日-2023年6月30日 二、20…

【024】C++对C的扩展之命名空间namespace详解

C对C的扩展 引言一、面向对象编程概述1.1、面向过程1.2、面向对象 二、作用域运算符 :: (双冒号)三、命名空间 namespace3.1、命名空间使用语法3.2、using声明命名空间中的成员可用3.3、using声明整个命名空间可用 总结 引言 💡 作者简介&…

【浅谈DBA职业生涯之误操作篇---读书笔记】

👈【上一篇】 💖The Begin💖点点关注,收藏不迷路💖 【下一篇】👉 🔻【💣 话题引入:请列举你在从事 DBA 生涯中,最难以忘怀的一次误操作】 🚩 该话题覆盖…

【算法】深入了解数据压缩算法(无损压缩和有损压缩)

目录 1 引言: 1 数据压缩的重要性和应用场景 2 压缩算法的基本原理和分类 2. 无损压缩算法 2.1 哈夫曼编码 2.1.1 哈夫曼编码的原理和步骤 2.1.2 实现一个简单的哈夫曼编码器 2.2 字典编码 2.2.1 LZW算法的原理和步骤 2.2.2 实现一个基于LZW算法的压缩程序…

力扣笔记(每日随机一题)—— 二叉树的中序遍历

问题(简单) 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/binary-tree-inorder-traversal/ 示例 1 输入:root […

诡异BUG:DIV 的 margin 设置影响父级

参考资料&#xff1a;1、【web前端】23.解决内部div的margin影响外部div的margin_Anabel Chen的博客-CSDN博客 2、元素之间设置margin的影响及原因 有如下代码&#xff1a; <!doctype html> <html> <head><meta http-equiv"Content-Type" co…

RPC——RPC协议介绍及原理详解

common wx&#xff1a;CodingTechWork 介绍 RPC框架 概念 RPC&#xff08;Remote Procedure Call Protocol&#xff09; 远程过程调用协议。RPC是一种通过网络从远程计算机程序上请求服务&#xff0c;不需要了解底层网络技术的协议。RPC主要作用就是不同的服务间方法调用就…