从Sun JVM转换到JRockit时需要注意的要点是什么?

8
我们考虑将一个大型产品从依赖Sun的JVM转移到JRockit。 我并不天真到认为这会是一个顺利的过渡(尽管我很希望我是错的)。
我们应该注意哪些问题或关注我们的回归测试?

JRockit 的主要问题在于其不稳定性难以复现。简单的回归测试无法揭示其恐怖之处。只有在高生产负载下才会出现零星挂起线程。你为什么要从 Sun 切换到 JRockit? - erickson
在搜索JRockit的过程中,我跳了几次之后来到了这里:http://www.shudo.net/jit/perf/。那里有一些令人惊叹的性能测试,显示Java服务器比使用GCC编译的C更快(在大多数情况下,Visual C++仍然更快)。+1 令人惊叹...但我担心这并不会让JRockit看起来很好。 - Bill K
这听起来像是通过投入一些资金和技术来提高应用程序性能的尝试。如果我在你的位置上(说起来容易!),我会试着教育你的管理层,让他们明白所谓的收益是以不稳定性为代价的,而这也是有成本的。通常可以通过经过验证的分析、改进算法和寻找提高并发性的机会等实践来获得更多的性能,同时风险更小。 - Carl Smotricz
让我们说这不是我的决定或影响,很遗憾。我更喜欢像标准的Sun工具这样经过验证的工具。 - Uri
2个回答

3

当然你有单元测试,对吧?:-)

我有一些“娱乐”地使用过JRockit,并从未遇到问题。从我的观察来看,它在许多类型的应用程序中被使用,所以它应该能够正常工作。它似乎也通过了Sun的兼容性测试(JCK),所以应该是顺利的。

可能会出现问题的领域包括:

  • 垃圾回收器
  • 本机代码(JNI)
  • 文件系统处理、线程等(除非它们使用Sun库代码)

文件系统、线程等都是VM与底层操作系统进行交互的部分。如果它们使用Sun代码,则出现问题的可能性较小。

我敢打赌,这个过渡会很顺利。


这就是问题所在:他们不使用Sun的原生代码进行套接字I/O和线程处理。他们使用自己的代码...因为它更快(并非如此!)。不幸的是,这种微不足道的速度提升带来了严重的不稳定性。我希望当Oracle完成收购Sun后,他们会消灭JRockit。 - erickson
@sylvarking:如果有不稳定性的恐怖故事链接,那就太棒了 :) - Uri
抱歉,我的观点基于我个人的、轶事式的经验,这是针对一个客户的大型应用程序,他们不会欣赏我分享这些信息。 - erickson

1

正如我经常说的那样:只有一种方法可以找出答案:去做!

过渡应该需要多长时间... 30分钟(你只需安装JRockit并在某个地方更改路径即可?)

你应该没问题。

我以前遇到过极其奇怪的JDBC问题(因为有问题的代码位于我们都知道只是一个接口的PreparedStatement引用中。底层驱动程序完全相同)。我到处都看到这些关于insert into语句的奇怪错误消息。

老实说,这里还有另一个变量,我正在从Java 1.2.2迁移到Java(JRockit)1.4,但我认为我不应该遇到所有这些问题。

但是再次强调,找出答案应该足够快。在我的情况下,我在不到5分钟的时间内发现了这些问题,而且由于那只是一个实验(我参加了BEA开发者日,当时他们谈论了JRockit具有的伟大功能),所以我就放弃了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接