问题标签 [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.

0 投票
1 回答
2355 浏览

java - 如何以编程方式获取 jmap 直方图?

我想jmap -histo从受监视的应用程序内部以编程方式获得等效的输出。我看到可以通过 HotSpot 诊断 bean 触发堆转储,但我看不到如何获取直方图数据。是否可以 ?

0 投票
3 回答
245 浏览

java - Java 6 Hotspot 中的 Java 5 运行时

有没有办法在 Java 5 的运行时环境中运行 Java 6 的热点?我有一些代码依赖于旧的类实现的行为,但我想使用更新的 JVM。我确实有计划将代码迁移到 Java 6(或者可能是 7!),但现在,我更关心是否有 JVM 问题。

0 投票
2 回答
1471 浏览

makefile - 从源代码构建 jdk(openjdk-7)

在我的 Ubuntu 11.10 上下载后openjdk-7-fcs-src-b147-27_jun_2011.zip,我尝试从源代码构建它。一开始有一些警告/错误,除了一个之外,我能够更正。

它说

错误:未正确定义 JAVA_HOME

我不知道 JAVA_HOME 的价值是什么。我尝试分配 JAVA_HOME="." // jdk 的主目录,但是我得到一个更有趣的错误......错误是:

错误:您的 JAVA_HOME 环境变量已设置。这很可能会导致构建失败。请取消设置并重新开始构建。

现在可能是什么问题。我的机器上有java,但到目前为止还没有javac。

你会问为什么我首先需要从源代码安装 jdk。原因是我想建立热点,并对其进行一些更改然后重建它。问题是它毁了我一整天来弄清楚如何独立构建热点。所以我想可能我可以构建具有内置热点的jdk ..然后我可以在需要时从那里重建它。

如果有某种方法来构建热点(从源代码),那也将非常有帮助。

0 投票
2 回答
468 浏览

java-me - 适用于 MIPS 的 CDC 或 Oracle JavaME Embed Client 资源

我被要求在 Broadcom MIPS 板上运行 Java 虚拟机,我很高兴从Oracle找到 MIPS 的 OJEC cvm 二进制文件。不幸的是,该二进制文件似乎不是为我的主板构建的,因为它无法正确执行。

我可以问任何人知道我是否可以在某个地方获得 OJEC 源代码,以使用我们用于开发板的工具链来重建客户端?如果是,是否有构建客户端的指南?

在搜索谷歌时,我从“Phoneme”项目中找到了一个 CDC 源代码,并且可以使用我们的 mips 工具链构建 cvm。它工作正常!我可以运行它的测试和一些 hello world 样本。但是,查看Phoneme svn log,我意识到该项目最近不活跃,最后一次更改大约是一年前。有人可以告诉项目的状态以及它与 OJECT 有何不同?

我也对openjdk的热点感到困惑。它与 OJEC 有什么不同?还是它们都基于 CDC?

这是我从盒子的 /proc/ 获得的 cpu 信息

0 投票
2 回答
555 浏览

java - Java System.nanoTime 经过的平均时间越来越小

这不是我第一次在编程语言中遇到时钟时间问题。基本上,我通过在 while 循环中调用一个函数来测量它的运行速度。问题是由于某种原因,while 循环运行的时间越长,经过的时间越短。谁能解释一下?代码如下。

所以在大约 1,000 次运行后,经过的时间是 750k 到 850k。但是在大约 100,000 次运行后,经过的时间下降到 580,000 到 750,000。通过观察平均值 (stats.getMeans()) 可以最好地注意到持续下降,在 108k 循环之后,平均值约为 632k,而 3k 循环后平均值约为 100 万。切换到 currentTimeMillis 而不是 nanoTime 不会改变任何东西。

0 投票
0 回答
1172 浏览

java - 如何在 MANIFEST.MF 文件中获取 Java 版本而不是 HotSpot VM 版本?

我有一个 Ant 脚本来编译源代码并创建一个 jar 文件。一些附加属性已附加到 MANIFEST.MF 文件中。但是,该Created-By属性显示 HotSpot VM 版本:

但我期待的是1.6.0_27等java版本。如何做到这一点?

更新:

我的 JAVA_HOME 指向 JDK。这是命令“java -version”的输出:

0 投票
4 回答
77 浏览

java - 强制热点进行频繁的GC?

我正在用 Java 对服务器进程进行基准测试,看起来 Hotspot 并没有产生很多 GC,但是当它发生时,它的性能会大大提高。

我可以强制热点频繁地进行较小的 GC,而不是一些大规模的长 GC 吗?

0 投票
4 回答
1156 浏览

c# - Java 在许多内核上的扩展性比 C# 差得多?

我正在测试在 Java 和 C# 的 32 核服务器上运行相同功能的许多线程。我使用函数的 1000 次迭代运行应用程序,这些迭代使用线程池在 1、2、4、8、16 或 32 个线程上进行批处理。

在 1、2、4、8 和 16 个并发线程时,Java 的速度至少是 C# 的两倍。但是,随着线程数量的增加,差距缩小,C# 的平均运行时间几乎相同,增加了 32 个线程,但 Java 偶尔需要 2000 毫秒(而两种语言通常运行大约 400 毫秒)。Java 开始变得更糟,每个线程迭代所花费的时间大幅增加。

编辑这是 Windows Server 2008

EDIT2 我更改了下面的代码以显示使用 Executor Service 线程池。我还安装了 Java 7。

我在热点 VM 中设置了以下优化:

-XX:+UseConcMarkSweepGC -Xmx 6000

但它仍然没有让事情变得更好。代码之间的唯一区别是我使用下面的线程池和我们使用的 C# 版本:

http://www.codeproject.com/Articles/7933/Smart-Thread-Pool

有没有办法让 Java 更加优化?Perhaos,您可以解释为什么我看到性能大幅下降?

有没有更高效的 Java 线程池?

(请注意,我不是指改变测试功能)

0 投票
3 回答
515 浏览

java - 终止执行服务和极快的 Java 代码?

在下面的代码中,我多次通过线程池调用一个函数。在这个函数中,我通过一个名为 FastestMemory 的全局属性来跟踪函数的最快执行速度。

但是,当我打印出该值时,在线程池循环之后,我得到了原始值,好像全局变量与每次循环迭代更新的变量不同。当我知道 FastestMemory 的值确实被分配给(例如)253475 时,我只返回了 2000000000。

1)我是否需要重新构建此代码以便能够跟踪最快的迭代?

2)我似乎能够非常快地执行此代码,它在四个 Xeon x7550 上每次迭代花费(平均)不到 1 毫秒。这是正常的还是我的时间在某个地方错了?C# 平均需要大约 400 毫秒?!?

0 投票
1 回答
7149 浏览

java - Java vs C# Multithreading performance, why is Java getting slower? (graphs and full code included)

I have recently been running benchmarks on Java vs C# for 1000 tasks to be scheduled over a threadpool. The server has 4 physical processors, each with 8 cores. The OS is Server 2008, has 32 GB of memory and each CPU is a Xeon x7550 Westmere/Nehalem-C.

In short, the Java implementation is much faster than C# at 4 threads but much slower as the number of threads increases. It also seems C# has become quicker per iteration, when the thread count has increased. Graphs are included in this post:

Java vs C# with a threadpool size of 4 threads Java vs C# with a threadpool size of 32 threads Peter's Java answer (see below) vs C#, for 32 threads

The Java implementation was written on a 64bit Hotspot JVM, with Java 7 and using an Executor Service threadpool I found online (see below). I also set the JVM to concurrent GC.

C# was written on .net 3.5 and the threadpool came from codeproject: http://www.codeproject.com/Articles/7933/Smart-Thread-Pool

(I have included the code below).

My questions:

1) Why is Java getting slower but C# is getting quicker?

2) Why do the execution times of C# fluctuate greatly? (This is our main question)

We did wonder whether the C# fluctuation was caused by the memory bus being maxed out....

Code (Please do not highlight errors with locking, this is irrelevant with my aims):

Java

C#: