当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应用程序时,操作系统的作用是什么?为什么我们需要操作系统? 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后

随机推荐

  • 使用 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