Questions tagged «jvm-hotspot»

HotSpot是Oracle和OpenJDK Java运行时环境使用的标准Java虚拟机。

11
如何用Java编写正确的微基准?
Java 堆栈溢出:Какправильнописатьмикро-тестывJava? 您如何用Java编写(并运行)正确的微基准测试? 我正在寻找一些代码示例和注释,以说明要考虑的各种问题。 示例:基准测试应测量时间/迭代或迭代/时间,为什么? 相关:秒表基准测试是否可以接受?

2
运行JDK代码时Java JIT是否作弊?
我正在对一些代码进行基准测试java.math.BigInteger,即使使用完全相同的算法,也无法使其运行速度与一样快。因此,我将java.math.BigInteger源代码复制到自己的程序包中并尝试了以下操作: //import java.math.BigInteger; public class MultiplyTest { public static void main(String[] args) { Random r = new Random(1); long tm = 0, count = 0,result=0; for (int i = 0; i < 400000; i++) { int s1 = 400, s2 = 400; BigInteger a = new BigInteger(s1 * 8, r), …
405 java  jvm  jit  jvm-hotspot 


12
JavaLaunchHelper类在…libinstrument.dylib中都实现。将使用两者之一。哪一个未定义
我在MacOS X上升级到了最新的Java 7u40,并在使用Eclipse启动应用程序时开始在控制台上收到以下消息。该应用程序运行良好,但我想找出问题的原因,并希望对此进行修复。 objc[10012]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. 有谁知道为什么打印此消息以及如何解决它?
274 java  eclipse  macos  jvm  jvm-hotspot 


4
什么是ReservedCodeCacheSize和InitialCodeCacheSize?
有人能说明一下JVM选项是什么ReservedCodeCacheSize和InitialCodeCacheSize是谁?具体来说,何时/为什么要更改?如何确定合适的尺寸? 这就是文档所说的: -XX:ReservedCodeCacheSize = 32m保留的代码缓存大小(以字节为单位)-最大代码缓存大小。[Solaris 64位,amd64和-server x86:2048m;在1.5.0_06和更早版本中,Solaris 64位和and64:1024m。]
86 java  jvm  jvm-hotspot 


4
正在运行的jmap无法打开套接字文件
我必须运行jmap才能进行进程的堆转储。但jvm返回: Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can be used when the target process is not responding 所以我用了-F: ./jmap -F -dump:format=b,file=heap.bin 10330 Attaching to process ID 10331, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.51-b03 …
85 java  linux  jvm  jvm-hotspot 

4
Windows上的多线程Java应用程序的CPU使用率太低
我正在开发一个Java应用程序,用于解决一类数值优化问题-更确切地说是大规模线性编程问题。单个问题可以分解为多个较小的子问题,这些子问题可以并行解决。由于子问题多于CPU内核,因此我使用ExecutorService并将每个子问题定义为可提交给ExecutorService的Callable。解决子问题需要调用本机库-在这种情况下为线性编程求解器。 问题 我可以在Unix和具有多达44个物理核心和256g内存的Windows系统上运行该应用程序,但是在Windows上,大问题的计算时间比Linux上高一个数量级。Windows不仅需要大量内存,而且随着时间的推移,CPU利用率从开始时的25%下降到几个小时后的5%。这是Windows中任务管理器的屏幕截图: 观察结果 整个问题的大型实例的解决时间从数小时到数天不等,并且最多消耗32g的内存(在Unix上)。子问题的解决时间在ms范围内。 对于仅需几分钟即可解决的小问题,我不会遇到此问题。 Linux开箱即用地使用了两个套接字,而Windows要求我显式地激活BIOS中的内存交错,以便应用程序利用两个内核。但是,是否执行此操作不会对总体CPU利用率随时间的下降造成影响。 当我查看VisualVM中的线程时,所有池线程都在运行,没有一个正在等待。 根据VisualVM,90%的CPU时间花在了本机函数调用上(解决了一个小的线性程序) 垃圾回收不是问题,因为该应用程序不会创建和取消引用很多对象。而且,大多数内存似乎是堆外分配的。对于最大实例,Linux上4g的堆就足够了,而Windows上8g的堆就足够了。 我尝试过的 各种JVM arg,高XMS,高元空间,UseNUMA标志和其他GC。 不同的JVM(热点8、9、10、11)。 不同线性编程求解器(CLP,Xpress,Cplex,Gurobi)的不同本机库。 问题 是什么导致大量使用本地调用的大型多线程Java应用程序在Linux和Windows之间的性能差异? 在实现方面有什么可以改变的,例如Windows,我是否应该避免使用接收数千个Callable的ExecutorService来代替呢?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.