问题标签 [jvm-hotspot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 通常需要多少程序员“协助”才能将 JIT 切换到调度表?
我知道 Java 会进行全面优化,并且可以根据有多少情况、开关是稀疏还是密集以及代码是否足够热以使 JIT 优化所述代码来优化开关。我只是想知道我是否需要进一步提供“帮助”,例如使用按位和正在测试的变量,或者将变量按位移动到“更好”的数字,假设所述代码确实非常热。“更好”是 0xXX 而不是 0xFFXX。是否有专门说明所需内容的热点 JIT 文档?而不是“只遵循 xxx 的一般编程指南”。
java - force inline in java
I looked at this post. It looks nice. However the authors or other aware people will tell me tricks with coding when HotSpot (does not depend on server or client or not Sun version) makes a code inline.
java - 如何设置 Java HotSpot VM 的开发环境?
了解 Java HotSpot VM 的最佳方式是什么?如果我想修改源代码并添加自己的功能,最好的开发环境是什么(ctags 是否可以很好地与大型代码库一起工作,还是我需要一个成熟的 IDE)?
java - JVM 崩溃日志中的 BufferBlob::Interpreter 是什么意思?
我正在调查我的应用程序中偶尔发生的 JVM 崩溃。hs_err 文件包含有关崩溃的以下详细信息。
...
...
...
所以这告诉我 JVM 在运行一些 Java 代码时遇到了段错误。错误日志还包含有关崩溃线程堆栈的信息。
我已经使用 GDB 从崩溃中连接到核心文件并获取有关堆栈的更多详细信息。这给了我以下输出。
这表明原始错误报告中列出的六个 libjvm.so 帧与获取 Java 锁有关。但是,我在 org.myapp.AppClass.getBytes() 中找不到任何使用任何锁的代码。
堆栈中的 BufferBlob::Interpreter 行是什么意思?这些是 Java 堆栈帧吗?JVM堆栈帧?是否有可能计算出这些堆栈帧中被调用的内容?
注意:请不要建议我尝试切换到更新的 Hotspot JVM。我依赖 CMS 收集器,而最近的 V1.6 Hotspot JVM 都没有一个足够稳定的 CMS 收集器。
编辑:本文档 (http://www.oracle.com/technetwork/java/javase/tsg-vm-149989.pdf) 指出“v”帧是“VM 生成的存根帧”。知道这意味着什么吗?
EDIT2: org.myapp.AppClass.getBytes() 从 DataInputStream 读取。这可能涉及以下堆栈跟踪:
最后一个方法获取锁。这可能是最终调用上面列出的 JVM 代码的来源。上面的这个堆栈有一个简洁的特性,即在 getBytes() 下面有 5 个 Java 堆栈帧。这将与“Java 框架”列表中的 5 行 BufferBlob::Interpreter 完美匹配。
这提出了几个新问题:
- “Native frames”部分下的 BufferBlob::Interpreter 的 5 行是否可能只是“Java frames”部分下相同行的重复?
- 为什么错误日志不显示这 5 个堆栈帧的详细信息?
EDIT3 - 这个 Oracle 错误看起来可能是相同/相似的错误:http ://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6676175
显示的堆栈跟踪并不相同,但它提到了 revoke_and_rebias 中罕见的竞争条件,该条件已在 6u14 中修复。
EDIT4 - 赏金消息应该说“熟悉热点实现”
java - JRockit JVM 与 HotSpot JVM
如果有人可以给我简要介绍这两个 JVM 的优缺点,因为它们都依赖于标准 JVM 规范。
java - JVM上的内存分配是无锁的
当您new Object()
在Java中执行a时,jvm是使用无锁算法分配内存还是需要锁定?
在这种情况下,我所指的 JVM 是 Hotspot VM。据我所知,它只需要增加一个指针来超快速地分配内存。但是在多线程的情况下,这个增量是否需要锁定或 CAS?
java - -XX:MaxPermSize 带或不带 -XX:PermSize
我们遇到了Java.lang.OutOfMemoryError: PermGen space错误并查看了 tomcat JVM 参数,除了我们还指定的-Xms
和参数。经过一些分析后,我可以看到 PermGen 空间上偶尔会发生垃圾收集,从而避免它运行满。-Xmx
-XX:MaxPermSize=128m
我的问题是:除了增加,-XX:MaxPermSize
如果我也指定会有什么区别-XX:PermSize
?我知道总内存将是Xmx+maxPermSize但是否有任何其他原因为什么不-XX:PermSize
应该在指定时出现?-XX:MaxPermSize
如果您有处理这些 JVM 参数的实际经验,请分享。
附言。JVM 是 HotSpot 64bit Server VM build 16.2-b04
java - 我如何从堆转储中知道 Java 对象是在终身空间还是伊甸园空间
我有一个 Hotspot JVM 堆转储,我试图找出一个对象是否存在于任期空间、伊甸园空间或幸存者空间中,但我做不到。
感谢有人可以帮助我。
java - 为什么使用 JIT 的解释器比没有 JIT 的解释器生成更快的代码?
我仍然不清楚通过 JIT 编译器将字节码编译成机器码的概念。我想知道为什么它比非 JIT 解释器产生更快的代码。有人可以给我一个很好的例子来说明这个过程是如何完成的吗?
java - Java 7 至少和 Java 6 一样稳定吗?
我记得最初发布 Java 7 时,有很多建议不要将它用于任何事情,因为编译器优化存在一些错误。这显然不仅仅是假设。从那以后我就没有密切关注情况;这些问题是否已经解决,目前普遍认为可以安全使用?
这个来自 java.com 的页面让我觉得它可能还没有准备好,但我不想过多地阅读它。如果它还不安全,是否足以-XX:-UseLoopPredicate
用作 VM 参数?
请注意,我不仅指的是特定的 Lucene 问题,还指的是 Java 7 的总体稳定性。Java 7 至少与 Java 6 一样稳定吗?