arv*_*ist 15 java openjdk jvm jvm-hotspot hotspot
OpenJDK VM和Oracle Hotspot VM还有两种不同的JVM吗?
我似乎无法找到任何有关OpenJDK VM的官方文档.即使在OpenJDK主页上也有一个开发HotSpot VM的HotSpot Group.
HotSpot组由参与HotSpot虚拟机的设计,实现和维护的开发人员组成
但是如果我在我的Windows机器上检查java -version它会打印出来
Java HotSpot(TM)64位服务器VM
但在我的Ubuntu VPS上
OpenJDK 64位服务器VM
如果这两个是不同的VM,它们之间的主要区别是什么?他们有不同的运行时标志集吗?
Bas*_*que 13
在通过apangin接受的答案现在已经过时。
对于Java 11等最新版本,Oracle JDK产品实际上与OpenJDK项目相同。OpenJDK现在包括Oracle以前的产品:Java Flight Recorder,Java Mission Control,应用程序类数据共享和ZGC。
引用Oracle.com博客:
因此,从Java 11开始,Oracle JDK构建和OpenJDK构建将基本相同。
在过去的几年中,Oracle发生了巨大的变化。
Oracle宣布了将其品牌Oracle JDK与OpenJDK融合到功能相同的意图。两者均基于OpenJDK代码库。
为此,Oracle,Flight Recorder和Mission Control以前出售的商业工具现已开源,并捐赠给了OpenJDK项目。见这和这对OpenJDK的网站。
Oracle和OpenJDK联盟的其他成员贡献了更多的源代码,以使OpenJDK代码库完全开源,并且不受GNU GPL + linking例外以外的许可证的约束。
Oracle已更改其许可条款。在甲骨文JDK品牌产品不再是免费的成本在生产中使用。另外,您可以从超过六家供应商中的任何一家免费获得OpenJDK分发,其中包括来自Oracle的一家。有关所有详细信息,请参阅由Java社区的支柱Java Is Still Free撰写的重要白皮书。
我绘制了此流程图,以指导您选择JDK源。
Oracle保留为紧急修复或安全漏洞修补其自有品牌产品的权利。但是该公司表示,他们打算与其他OpenJDK成员一起做出贡献并进行协调。Oracle继续拥有Java商标,并引领Java平台的未来。对于现有的长期支持(LTS)版本8和11,Oracle已将管理权移交给RedHat(IBM)。
这里的问题问:
OpenJDK VM和Oracle Hotspot VM是否仍然是两个不同的JVM?
如上所述,这两个产品在特征奇偶性上收敛。关于HotSpot技术,请继续阅读。
如上所述,HotSpot是Oracle JDK和OpenJDK内的一个组件。今天的HotSpot还结合了JRockit的零件。Oracle从Sun Microsystems和BEA Systems手中收购了这两个Java引擎中最好的一个。
AdoptOpenJDK项目还使用Eclipse OpenJ9(基于J9,由IBM捐赠)提供HotJpot的替代品,以构建OpenJDK 。从AdoptOpenJDK网站下载时,可以从菜单中选择HotSpot或OpenJ9。
当前,测试似乎表明OpenJ9的启动速度大大加快,而占用的内存却少得多,但是HotSpot在持续使用的情况下可能运行得更快。但这对于OpenJ9来说还处于初期,因此请自己研究最新的发展。
apa*_*gin 12
Oracle HotSpot JVM基于OpenJDK HotSpot项目.因此,它们大多是相同的VM,除了Oracle JVM还有一些额外的商业功能,主要是Java Flight Recorder,Application Class Data Sharing和Cooperative Memory Management.
两个VM的运行时标志几乎相同; 使用完整列表
-XX:+UnlockDiagnosticVMOptions -XX:+UnlockCommercialFeatures -XX:+PrintFlagsFinal
Run Code Online (Sandbox Code Playgroud)
从JDK 8u131开始,唯一的区别在于以下标志(OpenJDK VM中没有):
bool EnableResourceManagementTLABCache = true {product}
bool EnableSharedLookupCache = true {product}
bool FlightRecorder = false {commercial}
ccstr FlightRecorderOptions = {product}
bool LogCommercialFeatures = false {product}
ccstr MemoryRestriction = none {commercial}
bool ResourceManagement = false {commercial}
intx ResourceManagementSampleInterval = -1 {commercial}
ccstr StartFlightRecording = {commercial}
bool TraceSharedLookupCache = false {product}
bool UnlockCommercialFeatures := true {commercial}
bool UseAppCDS = false {commercial}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7054 次 |
| 最近记录: |