草庐IT

java - 为什么 JMX 报告的 JVM 堆使用最大值会随时间变化?

我的JVM堆最大值在我的一个hadoop集群的名称节点上配置为8GB。当我使用JMX监视该JVM时,报告的最大值不断波动,如附图所示。http://highlycaffeinated.com/assets/images/heapmax.png我只在一个(最活跃的)hadoop集群上看到这种行为。在其他集群上,报告的最大值保持固定在配置值。知道为什么报告的最大值会发生变化吗?更新:java版本是“1.6.0_20”堆最大值在hadoop-env.sh中使用以下行设置:exportHADOOP_NAMENODE_OPTS="-Xmx8G-Dcom.sun.management.jmxrem

java - 长时间运行的进程出现奇怪的 JVM 崩溃 - 可能是 JVM 错误

我们已经使用JavaFX为Mac构建了一个应用程序,并将其分发给了客户。但过了几天,客户开始报告一个奇怪的行为:应用程序突然退出。我们尝试重现该问题,但未能重现。昨天晚上,我让应用程序过夜,今天早上,我可以复制它。JVM崩溃了,我有它的报告。我不明白的是,对于纯Java应用程序来说,出现这样的错误是极不可能的。有人可以帮忙吗?没有JNI或任何东西,一个纯JavaFX应用程序。必要信息:Process:MyApp[929]Path:/Applications/MyApp.app/Contents/MacOS/MyAppIdentifier:unknown.com.bl.MainVersi

java - Cucumber-JVM 认为所有(@Given、@When、@Then)注释都是可互换的

我已经(非常残酷地)注意到,对于cucumber-JVM,当您定义其步骤具有看似相同名称的功能时,它们被认为是可互换的。给出Feature:GrabthatcashwithbothhandsandmakeastashScenario:SpenditGivenJackhas5dollarsWhenJackwantstobuyLearJetThenHedoesn'thaveenoughcashScenario:acquireitGivenJackisbrokeButhiswealthisslowlygrowingWhenJackhas5dollarsThenHecanaffordapack

java - 为什么 JVM 使用全 0 的巨型 int[]?

我知道JVM有一个内在的开销,我想做进一步的研究来确切地了解开销是什么。使用YourKit分析器,我发现有巨大的int[]充满了看似随机的信息。我的猜测是这些存储了一些性能指标和JVM用来优化应用程序的其他东西;但令我惊讶的是,所有元素的值都是0。为了得到我的结果,我使用了下面的“什么都不做”程序,因此结果只包括JVM上发生的事情。publicfinalclassMain{publicstaticvoidmain(String[]args)throwsInterruptedException{Thread.sleep(Long.MAX_VALUE);}}这是profiling结果的截图

java - JVM 线程转储包含不锁定线程的监视器

JVM线程转储显示等待锁定监视器的线程,但监视器没有相应的锁定线程的原因可能是什么?Windows2003上的Java1.5_14 最佳答案 您的代码经过任何更改后是否使用了任何JNI?(即,您是否正在运行从Java启动的任何native代码?)。我们已经看到了类似的行为,但是JDK1.6.0_05。应用程序似乎死锁,但Jstack显示线程正在等待没有其他线程持有的锁。我们有一些JNI代码,所以我们可能正在破坏某些东西。我们还没有找到解决方案,这个问题只能在一台机器上重现。 关于java

java - 有没有一种可移植的方法来找出 JVM 从 VM 内部打开了多少文件?

我正在为一些Java文件处理代码编写测试,并希望确保所有文件都已正确关闭。我不想运行“lsof”,因为这会打开更多文件并使测试套件不可移植。有人知道这样做的方法吗? 最佳答案 如果您正在寻找JDK的一部分,答案是否定的。您可能会发现使用JVMTI的东西,但这不是可移植的(它是native界面)。或者使用JPDA的东西,但这需要第二个JVM。我给你这两个首字母缩略词作为谷歌搜索的开始。如果你想在JVM中运行并且可移植,你必须为你的文件引用引入一个工厂:替换所有newFileInputStream(),newFileOutputStre

【JVM类加载】类的初始化和类加载器双亲委托机制

以此递进,先加载test9调用子类,先初始化父类,类的初始化7中之一。有两种类型的类加载器java虚拟机自带的加载器根类加载器(Bootstrap)扩展类加载器(Extension)系统(应用)类加载器(System)(2,3都属于Launcher类的内部类)用户自定义的类加载器java.lang.ClassLoader的子类。用户可以定制类的加载方式。包括自定义类加载器在构造的时候在构造方法中传入了一个父类加载。类的加载器并不需要等到某个类被“首次主动使用”时再加载它(个人理解加载不一定初始化,初始化一定加载)。类的加载jvm规范允许类加载器在预料某个类将要被使用时就预先加载他,如果在预先加

java - 从 JVM 访问 token 端点时出现 Google 身份验证错误

我们运行一个带有JVM后端的Web应用程序(Java7update75;代码在Scala中,但我认为这不相关)。我们使用Google通过Oauth进行身份验证。在过去几个月中,有几天我们间歇性地无法对用户进行身份验证。进出Google的重定向是成功的,但是当我们尝试在https://www.googleapis.com/oauth2/v4/token调用token_endpoint时为了验证身份验证,我们有时会遇到以下异常:javax.net.ssl.SSLHandshakeException:servercertificatechangeisrestrictedduringreneg

java - 跨不同 JVM 的 Java 标准库中的 SerialVersionUID

基于此处SerialVersionUID的描述:https://docs.oracle.com/javase/8/docs/platform/serialization/spec/class.html#a4100,似乎有必要始终在您创建的任何类中包含SerialVersionUID,以便用于序列化的JVM和用于反序列化的不同JVM不会自动分配它们自己的SerialVersionUID,由于虚拟机。这对于控制我自己的类的反序列化非常有效,但是如果我想确保标准库中使用JVMA序列化的类可以被JVMB反序列化怎么办?MapmyMap=newHashMap();HashMap定义了一个Seri

java - 让 JVM 使用我自己的类加载器

我编写了自己的类加载器。我需要使用我的类加载器加载我所有的类。我已将以下内容传递给VM:-Djava.system.class.loader=MyClassLoader只有我的包中第一个引用的类正在使用我的类加载器加载。我的包中的其他类正在使用AppClassLoader加载。这是MyClassLoader的样子:importjava.io.IOException;importjava.io.InputStream;importjava.net.URL;importjava.util.Enumeration;publicclassMyClassLoaderextendsClassLoa