不同操作系统下的 Java 程序效率

标签 java operating-system jvm

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




10年前关闭。




我最近遇到了一个与 Java 相关的问题(意译):

  • Java 应用程序可能在操作系统 A 上以合理的速度运行,但在操作系统 B 上运行缓慢的原因是什么?
  • 程序员可以做些什么来纠正这个问题?

  • 我的回答是(我知道我错了,但我会解释我的思考过程)

    (1) 应用程序应该在任何带有 JVM 的操作系统上以或多或少相同的速度运行,因为该应用程序是在虚拟机内部运行的。只要虚拟机设计正确,就没有关系。

    (2)呃..

    我的问题是:这个问题的正确答案是什么?

    最佳答案

    这一切都与实现有关。

    问题在于 JVM 本身是一个在主机操作系统上本地运行的程序,负责实现符合语言和库规范的 Java 库。此实现需要管理系统资源(例如文件、线程、套接字等),并且每个操作系统可能都有自己关于管理这些资源的“最佳实践”,这可能不一定与各种 Java 规范的设计保持一致.此外,操作系统本身实现了这些系统资源的接口(interface),并且它的实现可能不像其他操作系统那样健壮。

    例如,几年前,Linux 线程实现的性能远低于类似 UNIX 操作系统(例如 Solaris、AIX 等)上的相同 POSIX 线程 API。因此,在 Linux 机器上运行的 JVM 与在 Solaris 机器上运行的 JVM 具有相同的功能,但 Linux JVM 会受到该操作系统上(当时)不太出色的线程实现的阻碍。

    关于不同操作系统下的 Java 程序效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019859/

    相关文章:

    java - 依赖前一个和下一个元素的流处理

    java - 警报管理器不重复执行

    javascript - 如何使用spring mvc接收数组作为参数?

    java - 在类加载期间 memcpy 时 JVM 崩溃

    java - 如何从 C 中加载和调用 java 编译的类?

    java - 可疑的 JVM 时间行为

    java - 将制表符分隔文件读入 Java 中的 ArrayList<ArrayList>

    python - 有没有一种Python方式可以检查OS是否是64位Ubuntu?

    compiler-construction - 编译器是否特定于操作系统?

    node.js - 基于操作系统确认路径字符串类型的方法