我最近发现了一个与Java相关的问题(解释):
Java应用程序可能在操作系统A上以合理的速度运行,但在操作系统B上运行缓慢的原因是什么?
程序员可以做些什么来纠正这个问题?
我的回答是(我知道我错了,但我会解释我的思考过程)
(1)应用程序应该在具有JVM的任何操作系统上以大致相同的速度运行,因为应用程序在虚拟机内运行.只要VM设计正确,它就不重要了.
(2).. UHH
我的问题是:这个问题的正确答案是什么?
这都是关于实施的.
问题是JVM本身就是一个在主机操作系统上本机运行的程序,负责实现符合语言和库规范的Java库.此实现需要管理系统资源(例如文件,线程,套接字等),并且每个操作系统可能都有自己关于这些资源管理的"最佳实践",这可能不一定与各种Java规范的设计一致. .此外,操作系统本身实现了与这些系统资源的接口,并且其实现可能不像其他操作系统那样强大.
例如,多年前,Linux线程实现的性能远远低于类似UNIX操作系统(例如Solaris,AIX等)上的相同POSIX线程API.因此,在Linux机器上运行的JVM将具有与Solaris机器上相同的功能,但Linux JVM将受到该操作系统上(当时)不太优秀的线程实现的阻碍.