草庐IT

jvm-bytecode

全部标签

java - JVM上的内存分配是无锁的吗

当你在Java中做一个newObject()时,jvm是使用无锁算法分配内存还是需要加锁?在这种情况下,我指的JVM是HotspotVM。据我所知,它只需要递增一个指针即可超快地分配内存。但是在多线程的情况下,这个增量是否需要加锁或者CAS? 最佳答案 如前所述,默认是使用tlab。thisglossary中描述了行为如下TLABThread-localallocationbuffer.Usedtoallocateheapspacequicklywithoutsynchronization.Compiledcodehasa"fast

java - Maven - 使用 JDK 7 为 JVM 5 编译

我已经尝试让它工作了一段时间,但还没有成功。我想用指向JDK7的JAVA_HOME运行,但我想为JVM5编译一个项目。我已经通读了documentation,我找到了similarposts在SO上,但它们似乎都不适用于我的设置。我首先尝试仅设置target和source但出现错误:org.apache.maven.pluginsmaven-compiler-plugin1.51.5[ClassName]isnotabstractanddoesnotoverrideabstractmethodgetParentLogger()inCommonDataSource据我所知,该类已在JDK

java - 如何调整 jvm 使其崩溃而不是英勇地 GC 直到 100% CPU 利用率?

我们有一个JVM进程,它很少将CPU占用100%,看起来(根据visualgc)堆几乎耗尽。我们的假设是该进程正在英勇地进行GC,导致CPU峰值,这会影响整个系统的整体健康状况(由其他JVM执行不同的事情组成)。这个过程并不关键,可以重新开始。有没有一种方法可以通过启动它的命令行来调整JVM,使其落在自己的剑上,而不是继续进行GC并导致整个盒子受到影响?值得注意的是,我们没有收到OOMException,因此堆并没有完全耗尽,但我们认为只是勉强没有耗尽。或者,一些东西可以让我们了解JVM中的什么实际上以确认/否定我们的GC假设的方式使用CPU? 最佳答案

java - JVM 在 RHEL 5.2 的压力下崩溃

在4到24小时4小时到8天后,我在(当前最新的)tomcat6.0.24上运行Web应用程序时,(当前最新的)jdk1.6.0.18意外崩溃压力测试(30个线程以600万次/天的浏览量访问应用程序)。这是在RHEL5.2(Tikanga)上。崩溃报告位于http://pastebin.com/f639a6cf1崩溃的一致部分是:正在抛出一个SIGSEGV在libjvm.so上eden空间总是满的(100%)JVM使用以下选项运行:CATALINA_OPTS="-server-Xms512m-Xmx1024m-Djava.awt.headless=true"我还使用http://memt

java - JVM 热插拔

什么是JVM热插拔?许多定义表明此功能允许代码在调试期间动态更新。并且热插拔等一些限制仅限于更新方法体,并且尝试向类中添加方法和字段不会成功。谁能用代码解释一下。 最佳答案 这意味着您可以在调试session期间对代码进行某些更改,并使这些更改立即生效,而无需重新启动应用程序。在某些情况下,这是一个非常方便的功能。但是,您通常会限制哪些类型的代码更改可以热交换到正在运行的应用程序中。限制的确切性质取决于您的工具链。 关于java-JVM热插拔,我们在StackOverflow上找到一个类

java - -XX :+StressLCM, -XX:+JVM 的 StressGCM 选项

在玩一些jcstress代码时,我注意到两个对我来说很新的参数:StressLCM和StressGCM。我要做的第一件事就是在源代码本身中搜索这些,虽然我已经找到了一些东西,但仍然不清楚它们实际上做了什么。我真的很希望能在源代码中看到一些注释,这会带来一些启示,但没有运气。我还找到了bugdescription添加了这些,但解释对我来说没有意义:RandomizeinstructionschedulinginLCM/GCM.如果可能的话,有人可以用通俗易懂的英语解释一下他们的工作吗? 最佳答案 LCM/GCM代表局部代码运动/全局代

java - Java 9 jshell 可以用于在另一个 JVM 中运行代码吗?

Java9有一个用于Java的读取-求值-打印循环,称为jshell。我已经从命令行看到它在基本模式下工作。它也可以在远程进程中使用吗?换句话说,我可以连接到另一个Java进程并输入代码片段以在该运行时内运行吗?这将是一种无需编写带有UI的管理工具即可在应用服务器中更改配置状态的好方法。 最佳答案 简单的回答是否定的,没有办法将jshell附加到正在运行的Java进程。jshell是在其自己的JVM中运行的独立应用程序。 关于java-Java9jshell可以用于在另一个JVM中运行代

Java 虚拟机 (JVM) 及其性能比较

我想知道是否有人知道是否有一些比较以下jvms的基准。sunjvmvs.openjdkjvmvs.rockitjvmvs.j9jvmvs.apacheharmony.哪个性能最好? 最佳答案 答案实际上取决于您的应用程序的许多特征。示例见此处:http://jmob.ow2.org/jvm.html要了解一些通用标准,请尝试使用谷歌搜索:jvm性能基准 关于Java虚拟机(JVM)及其性能比较,我们在StackOverflow上找到一个类似的问题: https

java - JVM 消耗所有 CPU,大多数线程被阻塞。 JVM 错误?

昨晚,一台服务器(JBoss5.1GA,Java(TM)SERuntimeEnvironment(build1.6.0_20-b02),JavaHotSpot(TM)64位服务器VM,在VMWare上的LinuxVM中运行)突然开始使用100%CPU。该应用程序是运行Seam的相当典型的J2EE业务应用程序,没有什么特别之处。当时负载极低。我设法在进程被终止并重新启动之前获得线程转储(应用程序必须可用)。JStack在其死锁检测中出现异常;除此之外,大多数线程都处于阻塞状态。这是JVM错误吗?我以前没见过。重新启动后一切正常,就像在该服务器上使用该应用程序后的几个月(定期更新)。感谢您

java - 如何找出 JVM 对我的代码应用了哪些优化?

JVM(尤其是HotSpotVM)以其可以在运行时应用的大量优化而闻名。有没有办法查看某段代码,看看JVM实际对它做了什么? 最佳答案 一个问题是“JVM实际对它做了什么”在调用之间发生变化,因为JVM可以自由地重新生成代码。举个例子,几天前我调查了Hotspot使用final方法与虚拟方法相比有何作用。从微基准来看,我的结论是:客户端JVM:如果方法有效final(没有任何加载的类覆盖它),JVM使用非虚拟调用。之后,如果您加载一个覆盖此方法的类,JVM将更改JIT代码以使调用成为虚拟的。所以声明为final没有重要意义。服务器J