问题标签 [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 - .NET 运行时与 Java 热点:.NET 落后一代了吗?
根据我在 .NET 和 Java 执行环境上收集到的信息,目前的情况如下:
现代 Java VM 能够执行连续重新编译,结合分析可以产生巨大的性能改进。较旧的 JVM 采用 JIT。本文中的更多信息:http: //www.ibm.com/developerworks/library/j-jtp12214/ 尤其是:Java 理论与实践:动态编译和性能测量
.NET 使用 JIT 或 NGEN 生成本机代码,但是一旦生成本机代码,就不会执行进一步的(运行时)优化。
抛开基准测试并无意升级圣战,这是否意味着 Java Hotspot VM 比 .Net 领先一代。Java VM 中采用的这些技术最终会进入 .NET 运行时吗?
java - 条件 JIT 编译
在Java中,我们可以像这样进行条件编译
编译器将看到 DO_CHECK 始终为 false 并删除整个 if 语句。但是,有时,尤其是在库代码中,我们不能使用条件编译,但我想知道,我们可以使用条件 JIT 编译吗?
如果我们用 doCheck = false 构造 LibraryClass,JIT 编译器(在 Hotspot 中)是否也会删除 if 语句?
更新:我刚刚意识到 JIT 编译很可能不是在实例级别完成的,所以我认为这行不通,但也许有一种静态方式?
java - 堆栈消耗的可变性来自哪里?
在运行这个问题的测试代码并摆弄 JVM 的线程堆栈大小时,我发现结果不一定是可重复的:程序有时会抛出堆栈大小的值java.lang.StackOverflowError
,但有时不会。
我的问题是:“是什么导致堆栈空间消耗的变化?”
另外,可以将中断的堆栈放在该程序的主线程上吗?对于其他 JVM 实现和/或操作系统,结果是否同样具有不确定性?
测试代码
为每个堆栈大小设置多次运行测试程序的愚蠢 bash 脚本
结果
java - XX 的默认值:MaxDirectMemorySize
XX:MaxDirectMemorySize 的默认值是多少?
java - 如果一个类由不同的类加载器加载,(sun-jvm)热点优化是否会发生多次?
想象一个(容器)应用程序正在创建多个类加载器来托管几个其他/子应用程序。
容器应用程序有一个 -say- 根类加载器。每次加载子应用程序时,容器都会为此应用程序创建一个新的类加载器。
一些子应用程序使用相同的类,但它们没有被容器的类加载器加载,所以每个子应用程序(更好:它的类加载器)加载例如类 A 的代码。因此 permspace 将被填充两次:一次用于子应用程序#1,一次用于子应用#2。
这对 sun 的热点优化意味着什么?
相同的优化是否会在 A 类上发生两次,每个类加载器一次?
或者,是否有一些内置的“魔法”可以避免这种情况?(优化一次)
有人知道一个链接,这是解释吗?
我指的是带有 jdk 1.6 的 sun(服务器)vm
java - 为特定方法/类禁用 Java JIT?
我在我的 Java 应用程序中遇到了 JIT 破坏代码的问题。如果我禁用 JIT,一切正常,但运行速度会慢 10-20 倍。
有什么方法可以禁用特定方法或类的 JIT?
编辑:我使用的是 Ubuntu 10.10,得到相同的结果:
和:
java - 我可以以编程方式找出实例所在的 GC 代吗?
这个问题的范围仅限于HotSpot 世代。有没有办法以编程方式找出特定实例存在于哪一代。数据如:
- 年轻一代还是老一代?
- 如果年轻,哪个幸存者空间?
- 在 TLAB 内部?哪个线程?
只要我能做这样的事情,任何技术(例如,BTrace,JVMTI )都可以工作:
乞丐不能成为选择者,但理想情况下,我还可以了解感兴趣的实例何时从一代转移到另一代(即,基于事件回调——对轮询中隐含的延迟和开销不感兴趣。)
对没有正当理由只说“不”的答案不感兴趣:)
java - Java中的边界检查
“Hotspot 可以删除 Java 中的边界检查。” 任何人都可以解释一下吗?实际上我正在分析 C++ 和 Java 之间的差异。这不是家庭作业,我根据自己的兴趣进行分析。
garbage-collection - 是否可以在 JMX(在 HotSpot 上)中监控“Full GC”频率?
我想监控 JMX 中的 Full GC 频率。MBean 公开 GC 计数。(参见http://download.oracle.com/javase/1.5.0/docs/api/java/lang/management/GarbageCollectorMXBean.html - java.lang:type=GarbageCollector,name=)。
问题是 MBean 不区分次要 gc 和完整 gc。
有人有想法吗?
谢谢。
阿尔诺
java - JVM 在 CompilerThread 崩溃
尝试使用 SIGSEGV 编译特定方法(总是相同的方法)时,我的 java 应用程序几乎一直崩溃:
崩溃日志(有趣的部分......):
我试图创建一个核心转储并连接到它,但我找不到 CompilerThread 那里(也许它已经被杀死了