草庐IT

java - 如何在 SmartOS 上使用 HotSpot DTrace 探测器?

在MacOSX上,我可以通过运行找到运行Java程序的HotSpot探针:cody.mello@ashur~(1)%sudodtrace-ln'hotspot*:::'Password:Invalidconnection:com.apple.coresymbolicationdIDPROVIDERMODULEFUNCTIONNAME165084hotspot46libjvm.dylib_ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread[instanceKlass::initialize_impl(insta

java - 循环优化 Oracle Java 7-8 Hotspot VM

我想知道OracleJava7(或8)HotspotVM执行的循环优化是什么? 最佳答案 RangeCheckElimination-消除循环不变数组的范围检查。参见PhaseIdealLoop::do_range_check了解详情。优化由标志-XX:+RangeCheckElimination控制LoopPeeling-将第一次迭代从循环中分离出来并在循环体之外执行。在这里查看惊人的描述PhaseIdealLoop::do_peeling.此优化由标志-XX:PartialPeelLoop=true控制LoopPredicati

java - Jvm JIT 和 Hotspot - 有什么区别

我听说过这些术语的使用,但我似乎找不到关于它们在Java框架中的整体位置的顶级View。我知道JIT是一种编译机制,但它是JVM的一部分吗?什么是热点?它是某种新型虚拟机吗? 最佳答案 JIT是“即时”编译,基本上是即时编译。Hotspot是JVM中的概念,它只编译实际使用的代码。也就是说,“热”代码被反复使用。JVM跟踪使用情况,当某些东西变得足够流行时,它会将代码排队等待编译,同时继续解释代码。当JIT完成时,它用编译位交换解释位。这就是JVM需要为基准测试等“预热”的原因。Sun/OracleJVM的-server和-clie

java - 我在 tomcat 中收到 "Java HotSpot(TM) 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGTERM to handler"错误

我在VPS上安装了tomcat网络应用程序,而tomcat有时(大约每月一次)崩溃并在catalina.out中出现以下错误:JavaHotSpot(TM)64-BitServerVMwarning:Exceptionjava.lang.OutOfMemoryErroroccurreddispatchingsignalSIGTERMtohandler-theVMmayneedtobeforciblyterminated.以下是有关我的配置的一些详细信息:VPS:debian-5.0-x86_64内存:2.5GB,虚拟处理器:8硬盘:60gb硬盘-70%免费Tomcat7.0java版本

java - 无法获取线程转储?知道为什么我的应用程序会阻塞吗?

我有一个基本的Java服务器应用程序,它有100个工作线程,可以对URL执行简单的HEAD请求。我为此使用HttpClient4.x。运行几分钟后,我的程序就卡住了几分钟,我不明白为什么。查看visualvmmonitor报告的屏幕截图。你可以看到它是扁平的。在此期间,我无法获得良好的线程转储,而可视化虚拟机只是卡住,直到它被解锁。有没有人知道我可以做些什么来尝试开始调试这个人?可视化虚拟机:http://tinypic.com/view.php?pic=2i915bs&s=7这是我在卡住时尝试获取jstack转储时的输出:jstack-F4325AttachingtoprocessI

java - Oracle Java HotSpot VM 性能选项(+UseStringCache、+UseCompressedStrings、+OptimizeStringConcat)的当前状态是什么

我正在阅读JavaHotSpotVMOptions.我看到了一些有趣的VM开关,主要与字符串有关——这对我来说很有值(value),因为我的应用程序正在执行一些繁重的字符串操作。它们是:-XX:+UseStringCache-XX:+UseCompressedStrings-XX:+OptimizeStringConcat我想知道-这些开关是默认打开的吗?使用它们的真实经验是什么?它们有什么不同吗? 最佳答案 检查默认使用java-XX:+PrintFlagsFinal要找到你想要的东西你可以java-XX:+PrintFlagsF

java - 永久代总是在 HotSpot VM 上连续收集吗?

来自阅读arathermatureOracleblogentry,我了解到(...)thepermanentgenerationiscurrentlycollectedserially.然而,这篇博文是几年前的文章了,我想知道最近垃圾收集算法的进步可能会如何改变这种说法的准确性。我特别想知道新的G1垃圾收集器desribedbyOracle与:Theoldergarbagecollectors(serial,parallel,CMS)allstructuretheheapintothreesections:younggeneration,oldgeneration,andpermane

java - HotSpot JVM 中的动态 tenuring 阈值调整是如何工作的?

到目前为止我知道:对象分配在eden空间中,如果它们在次要集合中幸存下来,它们将被提升到幸存者空间之一对于进一步的次要集合,在次要集合中幸存下来的对象将在两个幸存者空间之间交换。在此期间,对象的个体年龄随着每次小收集而增加。达到特定tenuredthreshold的对象被提升到tenuredspace(老年代)。您可以设置InitialTenuringThreshold(因为它说的是“初始”而不是“最小”)和MaxTenuringThreshold(最大值:15)。然而,JVM会根据实际使用的幸存者空间和期望的幸存者空间调整实际任期阈值(我认为每次主要收集之后)。可以使用“Target

java - 使用 jmap(1.5) 从 java 核心转储中提取信息

长话短说,一些同事正在运行一个非常旧的设置(x86_64中的oc4jjdk1.5.6)和一个恰好是关键任务的应用程序。他们最近尝试部署应用程序的新版本,但一旦他们这样做,java进程就会抛出核心转储并死掉。问题是,核心转储似乎没问题,gdb可以打开它们,但是jmap和其他工具拒绝处理它们:#/usr/java/jdk1.5.0_06/bin/jmap/usr/java/jdk1.5.0_06/bin/javacoreAttachingtocorecorefromexecutable/usr/java/jdk1.5.0_06/bin/java,pleasewait...Erroratta

Java HotSpot(TM) 64-Bit Server VM warning_ Sharing is only supported for boot loader classes because

今天在学习freemarker静态化页面的时候遇到了这个错误:JavaHotSpot™64-BitServerVMwarning:Sharingisonlysupportedforbootloaderclassesbecausebootstrapclasspathhasbeenappended最终我找到了解决办法解决办法原帖:https://stackoverflow.com/questions/65613084/java-hotspottm-64-bit-server-vm-warning-sharing-is-only-supported-for-boot-lo您只需在代码编辑器配置的VM