就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
10年前关闭。
我最近遇到了一个与 Java 相关的问题(意译):
我的回答是(我知道我错了,但我会解释我的思考过程)
(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/