49得票1回答
JIT无法优化涉及Integer.MAX_VALUE的循环

在回答另一个问题时,我注意到了JIT优化的一个奇怪边界情况。以下程序不是“微基准测试”,也不旨在可靠地测量执行时间(正如其他问题的答案中指出的那样)。它仅用作MCVE来重现这个问题:class MissedLoopOptimization { public static void ma...

49得票3回答
JRockit JVM与HotSpot JVM的比较

如果有人能给我简要介绍一下两个JVM的优缺点,因为它们都依赖于标准JVM规范。

47得票2回答
读取Java JVM启动参数(例如-Xmx)

我正在尝试找到一种方法来确定JVM启动属性,以便从正在运行的Java进程中获取。具体而言,我想知道像-Xmx(最大堆大小)和-XX:MaxPermSize等参数存储在哪里。我正在运行Sun的1.6 JVM。 如果你想知道为什么我想这样做,那是因为我有许多可能配置不正确的JVM Web服务器,...

45得票4回答
Java打印编译输出: "made not entrant"和"made zombie"的含义是什么?

运行Java 1.6应用程序(1.6.0_03-b05)时,我添加了-XX:+PrintCompilation标志。对于一些方法的输出,特别是那些我知道会被频繁调用的方法,我看到了文本made not entrant和made zombie。 这是什么意思?最好的猜测是,在重新编译该方法或具有...

43得票3回答
43得票2回答
JVM如何决定对一个方法进行JIT编译(将方法归类为“热点方法”)?

我已经使用过-XX:+PrintCompilation,并且我知道JIT编译器的基本技术以及为什么要使用JIT编译。 然而,我仍然没有找到JVM如何决定何时对方法进行JIT编译的答案,即“JVM在何时将方法JIT编译”。 我是否正确地假设每个方法都会被解释,并且只有当它未被归类为“热方法”...

41得票4回答
我该如何编写Java代码以允许使用SSE并进行边界检查消除(或其他高级优化)?

情况: 我正在优化 LZF 压缩算法的纯 Java 实现,其中涉及大量的 byte[] 访问和基本的 int 数学运算用于哈希和比较。性能非常重要,因为压缩的目标是减少 I/O 要求。我没有发布代码,因为它还没有整理好,可能会被大幅重构。 问题: 如何编写代码以允许 JIT 编译成使用...

36得票2回答
Java虚拟机调优 -Xbatch和-Xcomp

我正在查看关于运行Alfresco的JVM配置选项,主要参考此文档,位于Alfresco Wiki上。建议之一是使用JVM标志-Xcomp和-Xbatch。其理由是: 如果您希望Hotspot预编译类,可以添加[-Xcomp和-Xbatch]。这将显着增加服务器启动时间,但会突出显示稍后可...

33得票2回答
Java 8为Metaspace保留了至少1G的空间,即使设置了(最大)MetaspaceSize。

Java 8启动后会为元空间(Metaspace)预留1G的空间,这意味着最小的元空间大小为1G。但是我将MetaspaceSize设置为300m,MaxMetaspaceSize设置为400m。为什么Java会预留比我允许的更多的空间呢? Java版本$ java -version jav...

33得票2回答
默认启用AES-NI内部函数?

针对AES-NI,Oracle关于Java 8的说法是: 加入了硬件内部函数来使用高级加密标准(AES)。可以使用UseAES和UseAESIntrinsics旗标启用基于Intel硬件的硬件AES内部函数。硬件必须是2010年或更新的Westmere硬件。例如,要启用硬件AES,请使用...