如果有人能够提供关于两个JVM的优缺点的简要信息,因为它们都依赖于标准JVM规范.
我有java应用程序在生产中崩溃.在dev/QA中没有这样做.jvm正在创建.mdmp文件和文本文件.如何分析二进制转储文件?我用Google搜索但没有运气.我们正在使用bea jrockit jvm 1.5 R27.
当我们将Xms和Xmx的值设置为相等时,对HotGot中的FullGC或年轻/终身gen的分配有什么影响.
它在JRockit中有什么不同吗?
我们正在考虑将大型产品从依赖Sun的JVM转换为JRockit.我并不天真地相信这将是一个平稳的过渡(虽然我喜欢错了).
我们应该注意哪些问题或关注我们的回归测试?
每次我尝试在Jdev上运行weblogic webcenter应用程序时,我都会收到以下错误,而且我无法找到有关如何在Web上的任何位置修复此问题的任何参考.
使用Java版本启动weblogic:无法创建Java虚拟机.无法识别的选项:-jrockit
我们在weblogic服务器v10.3.2.0中面临以下异常。我们正在使用JRockit JRE 6.0。
每个服务器请求中都涉及6-7个XA数据源。当在最后一个数据源上开始处理时,我们将遇到此异常。
请有人指教。
java.sql.SQLException: Unexpected exception while enlisting XAConnection
java.sql.SQLException: Transaction rolled back: setRollbackOnly called on transaction
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1616)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1503)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:446)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:403)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:364)
at com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.init(JtaTransaction.java:68)
at com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.getConnection(JtaTransaction.java:131)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForObject(MappedStatement.java:120)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:518)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:493)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:82)
Run Code Online (Sandbox Code Playgroud) 我们有来自2个供应商的不同JRE实现,一个来自BEA的Jrockit,另一个来自Sun. 在我的项目中,该文档明确指出要使用BEA的Jrockit实现.所以我想知道Jrockit在标准太阳JVM上的差异和优势.
谢谢Punith
我有一个C DLL,它使用JNI代理任何对底层java程序的调用,该程序进行实际的举重.我动态加载jrockit jvm.dll来进行函数调用.
供应商A有一个C#DLL实际调用我的C DLL而另一个供应商B有一个C#程序调用供应商A的C#DLL.
使用供应商A的C#DLL进行测试时没有任何问题,但是在与供应商B的C#程序集成后,我通过JNI_CreateJavaVM初始化JVM的调用会使整个程序崩溃.
任何帮助,将不胜感激.
我收到的错误消息是:
[ERROR] Could not find allocated thread local data key in TIB
[ERROR] Could not create fast TLD
JRockit aborted: Unspecified Error(52)
Assertion failed: Could not create fast tld
In vmDebug Before Abort() (src/jvm/runtime/debug/debug.c:103)
Run Code Online (Sandbox Code Playgroud)
编辑1:确定我已经反汇编了jvm.dll并且它调用TlsAlloc后跟TLSSet并且到达显示错误消息的代码,cmp esi,edx在第二个图像中的je SHORT 04755D4B之前必须不相等.
第一图像中的调用04755DD0的内容在第二图像中.
有谁知道之前的计算(操纵esi和edx的1)有什么作用?
编辑2 :(作为对PT的回应)我没有设置任何特定的线程系统,因此我认为它使用的是默认的线程系统,这是原生的,如下所示:http://docs.oracle.com/cd/E13222_01/ WLS/docs81b/JRockit的/ threads.html
您的猜测很可能是正确的,在查看反汇编时,我发现代码逻辑是这样的,它首先调用TlsAlloc,然后调用TlsSetValue将TlsAlloc返回的索引处的线程本地存储设置为常量幻数4711之后,它从线程信息块的开头使用eip循环查找值4711,一旦找到它,代码再次调用TlsSetValue将值设置为1147,此时它检查eip是否实际指向通过确保[eip]设置为1147来确定线程本地存储.
供应商B正在使用C#作为他们的程序,因此,他们将使用CLR虚拟机.一旦它到达供应商B调用我的DLL的点,他们就已经初始化了WPF棱镜和mef框架,将所有接口模块加载到它们各自的位置,初始化所有单例(在WPF prism术语中导出)模型并初始化MS工作流程.但是,当我将初始化代码转移到前几行时,jvm成功进行了初始化(这不是初始化jvm的正确位置,我们还没有测试其余的代码是否正常工作).
当TlsSetValue失败时,代码只分支到错误,TlsSetValue是否有任何原因失败?在供应商B的代码中我应该注意什么可能导致问题?
有许多文章/网页指出,JRockit将被合并到新版本的JVM或JDK 8中:
https://zh.wikipedia.org/wiki/JRockit
http://www.mythics.com/about/blog/answers-to-common-questions-on-java-versions-editions
但是我找不到任何文章/网页说明JRockit已真正合并到JDK 8中。是否有任何更新的消息?还是在JDK 8中实现了JRockit的部分功能,以至于JDK 8的实时性能不如JRockit?谢谢!
我对升级到Java 7非常感兴趣(出于我自己编码的原因).但是,我们的用户对延迟非常敏感(一切都需要亚毫秒级).我在3个不同的JVM之间进行了简单的性能比较测试,发现Java 7要慢得多.测试通过我们的应用推送了一些简单的消息.此测试是一种低负载,负载量测试,每隔几秒就会推送一条消息.结果是(以微秒为单位):
- Hotspot 6 (build 24): msgs= 23 avg= 902
- JRockit 6 (R28 b 29): msgs= 23 avg= 481
- Hotspot 7 (build 04): msgs= 34 avg=1130
Run Code Online (Sandbox Code Playgroud)
Oracle的策略是从Java 7开始合并JRockit和Hotspot(因此JRockit 6是最后一个可用的).有没有人有任何想法为什么表现更糟糕?(需要注意的一点是,代码是在Java 1.6下编译的.不确定是否可以解释它......)
更新:我投票结束了我自己的问题,因为我可以从评论中看到,我无法真正传达足够的信息,使其成为一个建设性的问题.感谢所有评论的人.
更新:更多反馈后,我想我会提供更多信息.测试总是在重新开始之后.每个测试的所有因素都相同.唯一改变的是JVM.多次重复测试可得到一致的结果.在任何测试迭代中都没有发生GC.
下面是其中一个测试运行的图表值.对于JRockit和Hotspot 7,第一个延迟值被抛弃了.JRockit具有巨大的第一价值,但随后很快就会优化并稳定下来.Hotspot 7需要更长时间才能进行优化,并且永远不会降至JRockit的平均值.每个数据点表示从TCP/IP套接字读取消息,运行业务逻辑以及在另一个套接字上写入消息的微秒.每条消息都是相同的,并且没有为任何消息输入新的代码路径.
我试过http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html,但我得到的只是
此页面上的内容不再可用,但您可以在Oracle Java Archive页面上找到下载内容.
jrockit ×13
java ×10
jvm ×5
jvm-hotspot ×2
assembly ×1
bea ×1
dump ×1
heap ×1
java-8 ×1
jdbc ×1
jdeveloper ×1
performance ×1
scala ×1
sun ×1
weblogic ×1