jvm-hotspot相关内容
目标 我正在使用JVMTI代理进行动态字节码检测.我必须检测那些“热"的方法,即调用JIT编译器的方法.为此,我听了CompiledLoadEvent并在其回调函数中调用RetransformClasses.反过来,这会在包含"hot"函数的类上调用ClassFileLoadHook,然后开始实际检测. 问题处所 目前,我正在检测类以产生一些线程.我也听线程启动并在我的代理中打印
..
我正在出于各种目的在运行时检测类文件.为此,我正在使用JVMTI代理.我对一种方法进行检测的策略是调用RetransformClasses函数来调用ClassFileLoadHook.此策略适用于在插装后进行任何进一步调用的所有方法,因为实际的插装发生在随后的函数调用中,但不适用于任何在程序中没有诸如main函数之类的进一步调用的方法. 我想在执行过程中动态地检测一个方法.我需要一些过程,例
..
我从我不理解的Java编译器中收到一条错误消息.我已经在OSX 10.6、10.9和Ubuntu 14.04以及Java 6和7上测试了我的代码.当我使用Eclipse调试器或从解释器(使用-Xint选项)运行时,一切运行正常.否则,我会收到以下消息: Java 1.6: Invalid memory access of location 0x8 rip=0x1024e9660 J
..
当我使用GarbageCollectorMXBean打印垃圾收集的详细信息时,输出将显示以下信息:- Name: PS ScavengeCollection count: 72 Collection time: 3041 Memory Pools: PS Eden Space PS Survivor Space Name: PS MarkSweepCollection coun
..
我很好奇,当从MemoryUsage类中查询值时,“已提交"内存的确切含义是什么.该类将其解释为“已承诺表示保证Java虚拟机可以使用的内存量(以字节为单位)".这是否意味着该内存正在由jvm进程使用,并且在Java进程释放之前不可供其他进程使用,或者这意味着如果Java进程尝试分配多达该数量的内存,则该Java进程将成功. ?我意识到这可能是特定于实现的,但是我只对热点感兴趣. 解决方案
..
我正在将我的应用程序从Java 1.6升级到1.7.当我尝试使用Maven 3.2.1进行构建时,构建失败,并显示以下错误消息: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project my-app5: Co
..
在使用异步事件探查器和gperftools进行性能分析时,我注意到jvmti->GetTag在我的代理的结果中显示了很多内容.当我检查它的实现方式时,在jvmitTagMap.cpp的源代码中发现了以下内容: jlong JvmtiTagMap::get_tag(jobject object) { MutexLocker ml(lock()); // resolve the obj
..
我正在使用此Java版本: java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.3) (suse-9.1-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) 当我启动Java程序时,例如 java TestApp 默认情况下,
..
我们有一个应用程序以集群模式(6个节点)运行Wildfly应用程序服务器. 当触发GC时,有时我们会看到JVM冻结16秒. 如果15秒钟内未收到心跳响应,则该应用程序对时间敏感,并且群集中的其他节点认为该节点已死(JVM在其中暂停). 因此,JVM冻结导致应用程序不稳定. 为了了解GC期间发生的情况,我们启用了热点,安全点日志,并在GC暂停时查看以下跟踪. 任何人都可以解释以下参数的含义.
..
我必须评估从正在运行的Java程序的内存中提取某些对象(例如java.security.PrivateKey)有多困难. 我不太喜欢这种低级内存,因此我从小型C程序开始,熟悉gdb,/proc//maps,/proc//mem和但是,切换到Java时情况发生了变化.由于使用了垃圾回收,因此使用Java分配和管理内存的方式非常不同.在C程序中,我将查看一个堆栈地址,并确定其
..
如该问题所述: OpenJDK与Java HotspotVM Oracle的商业Hotspot JVM本质上是OpenJDK,还有一些仅用于商业客户端的功能. 但是-这些额外的功能实际上是否仅在使用现成的硬件的情况下有助于提高单机和/或小型集群的性能?还是只与具有特定组织需求的大公司以及具有自定义硬件的大型系统有关? 我要特别问的是"Java Flight Recorder
..
如果我从Windows窗口的命令行运行Java,如下所示: "C:\Program Files (x86)\Java\jdk1.7.0_51\bin\java.exe" -XshowSettings:all -Xss=1m -Xmx256m 我看到以下输出: VM settings: Stack Size: 1.00M Max. Heap Size: 256.00M Ergonom
..
我知道Java HotSpot用来确定某个方法是否值得内联的标准之一是该方法的大小.一方面,这似乎是明智的:如果该方法很大,则内联会导致代码膨胀,并且该方法执行将花费很长时间,因此调用开销很小.这种逻辑的麻烦在于,在您决定内联后,很可能会发现,对于该特定的调用站点,大多数方法都是无效代码.例如,该方法可能是一个巨大的switch语句,但是大多数调用站点都使用编译时常量来调用该方法,因此实际上:内联
..
可能重复: 为什么JVM不缓存JIT编译代码? 我了解JIT编译是使用热点机制编译为本地代码,因为它是对OS,Hardwards等的优化,因此可以非常快速地 我的问题是,为什么Java不将符合JIT要求的代码存储在文件中的某个地方,而将其用于以后的用途?这也可以减少“初始预热"时间. 请让我知道我在这里想念的东西. 要添加到我的问题: 为什么Java不将完整的代码编译为本
..
查看从OpenJDK的HotSpot生成的汇编代码时,序言中有一部分将%eax值复制到堆栈(rsp-0x14000)的更远位置,我不明白为什么这样做: > [Disassembling for mach='i386:x86-64'] [Entry Point] [Verified Entry Point] [Constants] # {method} {0x0000000120f0f410}
..
是否可以在运行时更改Java JVM(JIT)的选项和/或模式?例如.更改XX:CompileThreshold,甚至在解释的代码和编译的代码之间进行切换(-Xcomp与-Xint). 我的JVM来自OpenJDK(1.6),Hotspot或Zero/Shark 解决方案 您无法在运行时更改JVM模式,但是可以在不重新启动JVM的情况下修改某些标志.只需使用JMX客户端(如Visua
..
在Java 8之前,我们有5个主要的运行时数据区域: 方法区域 堆 JVM堆栈 PC寄存器 本机方法堆栈 在Java 8中,没有Perm Gen,这意味着不再有 "java.lang.OutOfMemoryError:PermGen" 这很棒,但我也读过 方法区域是Perm Gen中空间的一部分 但是我似乎找不到任何明确表明Java 8中不再存在Method区
..
我在Stack Overflow上阅读了一些有关JVM的文章,并想下载Hotspot JVM的二进制副本,但是我无法在 http://www.java.net . 除此之外, Oracle Oracle JVM是否适合生产网站? 解决方案 概述: 此SO问题可能会清除有关“什么是JVM,热点"的问题.和OpenJDK". 基本上: JVM 表示 Java虚拟机
..
XX:MaxDirectMemorySize的默认值是什么? 解决方案 来自我看到了: 163 // A user-settable upper limit on the maximum amount of allocatable direct 164 // buffer memory. This value may be changed during
..
我得到了以下程序集列表,作为Java程序的JIT编译的结果. mov 0x14(%rsp),%r10d inc %r10d mov 0x1c(%rsp),%r8d inc %r8d test %eax,(%r11) ;
..