当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

2024-03-27

我在网上读过一些资料,有人说Java应用程序是由java虚拟机(JVM)执行的。 “执行”这个词让我有点困惑。据我所知,非Java应用程序(即:用C、C++编写...)可以由操作系统执行。在较低级别,这意味着操作系统将二进制程序加载到内存中,然后指示CPU执行内存中的指令。

那么现在有了 JVM,会发生什么呢?据我所知,JVM(包含运行时环境)将首先由操作系统调用。从那时起,JVM 将为应用程序生成一个(或多个)线程。我想知道操作系统的作用是否还发挥作用?在我看来,JVM 已经“绕过”了操作系统,直接指示 CPU 执行应用程序。如果是这样,为什么我们需要操作系统?

更进一步,JVM 将使用其 JIT 将应用程序的字节代码编译为机器代码,然后执行这些机器代码。既然已经是机器码了,还需要JVM吗?因为操作系统可以代替 JVM 来指示 CPU 执行这些机器代码。我在这里犯了什么错误吗?

我想向这里的人们了解更多。如果我错了,请纠正我。太感谢了!


我们需要操作系统来完成 C 或 C++ 程序所需的所有功能。默认情况下,JVM 会执行更多操作,但它不会取代操作系统执行的任何操作。唯一的区别可能是有时你有Your Code[呼叫]JVM[呼叫]OS,或者使用编译后的代码,您可以拥有Your Code[呼叫]OS

类似地,在 C++ 中你可能有Your Code[呼叫]Boost[呼叫]OS.

当您的程序以本机代码运行时,它不需要 JVM。这很好,因为 JVM 知道何时“退后”并让应用程序运行。但是,并非所有程序都会在应用程序的剩余生命周期中编译为本机代码,因此您仍然需要它。

可以通过 JNI 使用内核旁路设备/驱动程序,但 Java 不直接支持此类功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统? 的相关文章

  • 无法在 Spring boot 中使用 @Valid 验证请求正文

    我想验证我的请求正文 Valid注解 但在 Spring Boot 中不起作用 我在 JAR 文件中有一个 Request 类 无法使用两个字段进行修改 其中一个字段的类型为对象 我的控制器类接受此类对象作为请求主体 当我将下面的 JSON
  • 如何从 TextInputLayout 中删除底部填充

    第一张图就是我想要的 第二张图是我实现的 正如您所看到的 TextInputLayout 的底部有一个填充 这使得灰色背景溢出超过 edittext 行 请不要建议负边距或填充 因为它在较新的 API 中不起作用 这是我为第一个文本输入布局
  • 何时捕获 java.lang.Error?

    在什么情况下应该抓住java lang Error在申请上 一般来说 永远不会 但是 有时您需要捕获特定的错误 如果您正在编写类似框架的代码 加载第 3 方类 那么最好抓住LinkageError 未找到类定义 链接不满足 类更改不兼容 我
  • 如何在java中创建保留方法参数注释的动态代理?

    我目前正在尝试代理一些现有的 JAX RS 资源 以便允许我使用 Hibernate Validator 的方法验证支持 但是 当我代理我的类 当前使用 cglib 2 2 时 代理类中的参数上不存在 FormParam 注释 因此 JAX
  • Joda-time:今年 ISO 第一周的第一天

    我想找出今年 ISO 第 1 周中星期一的日期 对于 2009 年 这将是 2008 年 12 月 29 日星期一 我确定乔达时间 http www joda org joda time cal iso html可以处理这个问题 但我就是无
  • 使用 lambda 内联过滤避免意外 null

    我有每个元素的列表 我想这样做 使用Java 8 disabledUsersOnLDAP stream forEach user gt usersRepository findEnabledByUsername user getUserNa
  • 使用反射检查java中的字段是否为final

    我正在编写一个类 它在某些时候必须拥有它的所有内容Fields 从该类的另一个项目分配 我通过反思做到了 for Field f pg getClass getDeclaredFields f set this f get pg 问题是 这
  • JAVA - 路径问题(在 Eclipse 中有效,在 cmd 中无效)

    为什么下面的启动在 Eclipse 中有效 private static MaxentTagger maxentTagger new MaxentTagger c DP lemma models english left3words dis
  • 测试 powermock 模拟客户端调用的 http 服务器超时

    我需要为 connectTimeout 和 SocketTimeout 异常编写测试用例 我使用 powerMock 创建模拟对象 下面是我的代码 但是我的模拟对象出现空指针异常 任何帮助表示赞赏 package com util impo
  • Java正则表达式以数字和固定长度开头的字符串

    我制作了一个正则表达式来检查 String 的长度 所有字符都是数字并以数字开头 例如 123 以下是我的表情 REGEX 123 d 9 但它无法检查字符串的长度 它仅验证那些长度为 9 并以 123 开头的字符串 但如果我传递字符串 1
  • csharp类可以像java类一样“继承”xml文档吗?

    我正在向一些csharp代码添加注释 并且我正在使用 net 或其他东西 提供的xml语言 我有一个接口和一些实现类 我在界面中有一个方法 它有一个注释 在实现类中没有对实现方法进行注释 当人们在java中这样做时 javadoc在生成文档
  • 模拟网络断开连接以在本地测试分布式应用程序分区

    我有几个在本地主机上运行的分布式应用程序实例 每个实例都通过某些端口与其他实例通信 所有实例一起构成一个整体 我实际上是在谈论动物园管理员 http hadoop apache org zookeeper 在 Linux 上运行 现在我想编
  • 使用 Scanner 类输入

    我从过去的经历中了解到的是nextInt or nextDouble 将继续搜索 直到在同一行或下一行中找到整数或双精度数 这并不重要 同时通过扫描器类读取字符串作为输入next 考虑空格之前的那些字符串并将光标保持在同一行 其中nextL
  • JDA Events 更新版本后停止工作 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个使用最新版本的 JDA 4 2 0 168 用 Ja va 开发的不和谐机器人 我的机器人中有几个事件 但只有一
  • 如何使用 Jericho HTML 解析器获取特定标签之间的文本和其他标签?

    我有一个包含特定标签的 HTML 文件 例如 table cellspacing 0 结束标签是 table 现在我想获取这些标签之间的所有内容 我正在 Java 中使用 Jericho HTML 解析器来解析 HTML 是否可以获取 Je
  • 使用外部属性文件执行 jar

    我有一个带有主类的 jar 可以像这样执行 java jar test jar 罐子里有类似的东西 public static void main String args throws IOException InputStream is
  • 带有 CompletableFuture 的 MDC 记录器

    我正在使用 MDC Logger 除了一种情况外 它对我来说非常适合 无论我们在代码中的何处使用 CompletableFuture 对于创建的线程 MDC 数据都不会传递到下一个线程 因此日志会失败 例如 在代码中我使用下面的代码片段来创
  • “[B”是什么样的 Java 类型?

    我正在尝试通过 Java 代码 Hibernate 从 MySQL DB 获取 MD5 加密密码 但我既得不到 Strong 也得不到任何合理的 Java 类型 我唯一收到的是这条无用的消息 java lang ClassCastExcep
  • Java初学者网络开发工具包/环境

    我的任务是使用 java 和 mysql 开发一个交互式网站 使用 servlet 检索和处理数据 使用小程序对客户端数据进行特殊处理 并处理客户端对不同数据视图的请求 您会推荐什么作为使用 java 进行 Web 开发的合适的通用工具包
  • 在Java中将资源文本文件读取到字符串[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有办法将资源中的文本文件读入字符串 我想这是一个流行的要求 但在谷歌搜索后我找不到任何实用工具 Y

随机推荐

  • 使用 pytest-django 进行测试期间,Django 连接对象看不到第二个数据库的表

    底线 在使用 pytest django 进行测试期间 我的 Django 连接对象看不到第二个数据库的表关系 概述 我有一个问题 我的 Django 连接对象似乎获取了错误的数据库信息 当我查询 客户 数据库中的表时 我偶然发现了这个问题
  • 文本编辑器的动态高度

    我正在努力适应TextEditor里面一个ScrollView 有没有办法制作TextEditor只占用适合所有文本所需的空间 或者简单地说 如何改变height of the TextEditor动态地适应所有文本 你可以把它放在一个ZS
  • 取消 AJAX 请求会减慢后续导航速度

    在我的应用程序中 当用户请求报告时 jquery AJAX 使用 load 调用一个执行大量数字运算和 mySQL 请求的文件 加载一般需要5 6秒 ajaxStart and ajaxStop 用于在加载期间显示加载 gif 问题 如果用
  • 为什么我的 CompletableFuture 代码可以在 Java 8 中运行,但不能在 Java 11 中运行?

    为什么这段代码在 Java 8 和 Java 11 中的行为不同 private static String test2 CompletableFuture runAsync gt IntStream rangeClosed 1 20 fo
  • 使用布局将面板设置在屏幕中央

    我尝试使用以下方法将子面板的位置设置在父面板的中心 parent panel setLayout new BorderLayout parent panel add child panel BorderLayout CENTER 但它被添加
  • Python 类成员

    我刚刚学习 Python 并且有 C 背景 所以如果我对两者有任何困惑 混淆 请告诉我 假设我有以下课程 class Node object def init self element self element element self l
  • MVC 中间件检查控制器方法的属性

    我正在使用 asp net core mvc 在默认身份验证旁边 我添加了非常具体的授权 这是通过使用完成的ResultFilterAttribute属性 将来 为了确保开发人员为每个控制器方法指定权限 我想在执行操作之前检查是否为方法设置
  • 查询中的mysql语法错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到错误查询失败 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 5 行 5 7 6 9 1
  • Nuxtjs:如何使用 HttpOnly Cookie 进行 Nuxt-Auth 策略

    我之前使用过 Vuejs 并决定研究一下 NuxtJs 在我以前的应用程序中 我的服务器发送了一个我的客户端无法读取的 HttpOnly cookie 因此 对于身份验证 我尝试了 NuxtAuth 它有一些策略 我注意到不可能使用 Htt
  • Android WebView 中的编程点击

    我有一个网站href其中将我重定向到 https a href class login link link private cab link i class icon user i a 所以 我可以通过 JavaScript 点击它 它在
  • maxima:使用函数作为函数参数

    就像标题所说 我想使用函数作为函数参数 直觉上我尝试了类似的东西 a t c t c b R 11 R 12 R 13 d 1x d 1y d 1z R 11 d 1x R 12 d 1y R 13 d 1z f a t c b R 11
  • 如何使用特定的“hd”(托管域)参数配置 Firebase + Google OAuth?

    我正在将 Firebase 与 Google 身份验证提供商一起使用 在其他应用程序中使用 Google OAuth 时 我可以将身份验证配置为仅限于特定域 Google OpenID Connect 文档详细介绍了用于此功能的 hd 参数
  • 如何生成一个“私有 URL”,在安全性和便利性之间实现最先进的平衡?

    我在哪里可以找到有关 私有 URL 的写得很好 深入的技术讨论 例如 Google 文档中使用的 知道链接的任何人 我正在寻找诸如生成链接的算法和实现 它使用的 ID 空间的大小 安全影响的分析以及为了方便而在安全性方面做出的务实妥协等主题
  • 单击链接/按钮时更改 div 的内容

    基本上我有一个网页 有一个 div id content 和一个 div id sidebar 我想做的是在侧边栏中单击链接 按钮时更改内容 div 中的内容 而不需要为每篇文章提供单独的页面 原因是 我正在为一些多个乐队做一个 BIO 页
  • Xamarin.UITests - 在真实设备上测试 - iOS - 应用程序权限弹出问题

    我的 iOS 应用程序需要一些权限 GPS 推送通知 当应用程序第一次启动时 iOS 会询问用户是否同意向应用程序授予这些权限 我已经编写了一些 UITest 并希望在本地连接的 iPhone 上自动运行它们 问题是我无法覆盖权限问题并且我
  • python int() 函数

    如果是小数 下面的代码会显示错误 例如49 9 被发送到next多变的 你能告诉我为什么吗 为什么int 将其转换为整数 next raw input gt how much int next if how much lt 50 print
  • 复制可见单元格以将 listobject 过滤后的数据提取到新工作簿

    我正在尝试将 listobject 过滤数据提取到新工作簿中 但是 会提取所有数据 而不仅仅是过滤后的数据 Set loop obj wsCopy ListObjects 1 loop obj AutoFilter ShowAllData
  • 熊猫从长到宽

    使用 pandas 我想将长数据帧转换为宽数据帧 但通常pivot方法没有我需要的那么灵活 这是长数据 raw sample 1 1 1 1 2 2 3 3 3 3 gene G1 G2 G3 G3 G1 G2 G2 G2 G3 G3 ty
  • 是否有必要在递归调用的计时器内清除Timeout?

    是否需要打电话clearTimeout 在 Coffeescript 中的递归调用函数中 我关心的是是否不打电话clearTimeout 如果此函数每秒运行很多次 随着时间的推移 可能会导致某种内存泄漏 我的想法是 JS 垃圾收集器处理这个
  • 当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

    我在网上读过一些资料 有人说Java应用程序是由java虚拟机 JVM 执行的 执行 这个词让我有点困惑 据我所知 非Java应用程序 即 用C C 编写 可以由操作系统执行 在较低级别 这意味着操作系统将二进制程序加载到内存中 然后指示C