我最近遇到了一个与 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/