问题标签 [jinfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1857 浏览

java - 在 VM 已经启动后更改 java -Xmx

可能的重复:
在运行时设置 JVM 堆大小以
编程方式设置最大 Java 堆大小

我在我的计算机上运行了一个长期运行的 Java 作业,当它接近尾声时它的速度非常慢,因为它遇到了严重的内存压力并且垃圾收集器必须频繁运行。换句话说,我低估了-Xmx这项工作所需的最大堆大小。

由于我不想重新启动作业,有没有办法让 JVM 在 JVM 已经启动后更改它的最大堆大小,例如使用jinfo -flag或类似的东西?这可能吗?

我一直在尝试使用jinfo -flag +Xmx1024mor的变体jinfo -flag Xmx=1024m,它们都给了我以下例外。这是Debian 错误 #532538的症状(我正在使用受影响的 JVM 版本),还是这是预期的行为(-Xmx以后不可能更改),还是我提供的标志jinfo不正确?

0 投票
1 回答
908 浏览

java - 无法在 Mac OS X 上通过 jinfo 启用 DTrace 探测

在雪豹上运行 Java 6。

您应该能够使用 jinfo 实用程序在正在运行的 Java 进程上打开 ExtendedDTraceProbes。即使在我的命令提示符下,jinfo也谈到了启用通用标志:

据我所知,DTrace 标志没有任何特殊价值,重要的是它们的存在与否。

但是当我尝试这样做时,我会遇到两个错误之一,这取决于我是否以 sudo 开头。

假设:
jps

与 StayRunning 进程相同的用户:
jinfo -flag +ExtendedDTraceProbes 1234

以 root 身份尝试:
sudo jinfo -flag +ExtendedDTraceProbes 1234

错误在第二行,当然进程仍在运行。

奇怪的是,这个页面没有显示 OS X 的“+”选项,但是我自己的机器打印出使用信息。

这是我的简单代码。它与 Eclipse 类似地失败。

StayRunning.java

0 投票
1 回答
375 浏览

java - jinfo 偶尔会导致 JVM 崩溃

偶然我发现一个 Java 进程的状态是 T(已停止,要么是通过作业控制信号,要么是因为它正在被跟踪)。我认为这可能与jinfo我当时运行此命令有关。然后我尝试jinfo再次运行,该过程再次崩溃。但这并不容易重现。

有谁知道为什么 process 的 stat 变成了 T without kill -SIGSTOP?是否jinfo有可能导致进程崩溃的错误?

jinfo编辑:当流程运行超过 60 天时,我 100% 重现了这个问题。如果进程运行了很长时间,似乎会触发该错误。它不适用于新流程。

OMG,jmap有同样的问题,它也是 100% 复制的。但不是为了jstack。现在我很确定这是关于检测 jvm 的。

$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01,混合模式)

0 投票
0 回答
438 浏览

java - 运行 jinfo 和 jmap 时的灾难性错误

当我对任何 Java 进程运行 jinfo 或 jmap 时,它将“暂停”Java 进程。对于长时间运行的过程,它是 100% 复制的。

以下是详细步骤:

  1. 选择一个运行超过 25 天的 Java 进程(它是有线的,因为这对新进程不起作用)。
  2. 运行 ps 以检查进程的状态,应该是预期的“Sl”。
  3. 运行 jinfo 或 jmap 到这个进程(BTY,jstack 没有这个问题)。
  4. 运行 ps 以检查进程的状态。这次它变为“Tl”,表示已停止,并且该进程不响应任何请求。

这是我们流程的输出:

这可能是 JVM 的错误,但我向 oracle 报告此问题后没有得到任何回应。所以我希望这里的一些JVM专家可以提供帮助。

$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01,混合模式)

0 投票
0 回答
224 浏览

java - 关于 jvm 命令:jstat 和 jinfo

jstat 得到这个:

现在我使用命令./jinfo -flag PermSize 8216获取输出:

./jinfo -flag MaxPermSize 8216获得:

关于 jstat 我在 oracle docs 上找到了消息:

在此处输入图像描述

在我看来,PC 和 PermSize 是一样的。显然,这是错误的。我应该如何理解 PC 和 MaxPermSize 之间的区别?

在我的服务器上,偶尔会出现永久的OOM异常,我需要怎么做才能扩展PC的容量?

这是一个日志片段:

使用 jmap 获取输出:

MaxPermSize是82.0MB,PC是28M,为什么会出现OOM?

0 投票
1 回答
419 浏览

jvm - jinfo 非默认 vm 标志是什么意思

jinfo非默认 vm 标志是什么意思?非默认是模棱两可的,我认为它看起来像默认的 vm 标志。

0 投票
1 回答
30 浏览

java - java 与 jinfo 报告的 Java 选项 MaxDirectMemorySize 不同

我用新的内存选项重新启动了一个 Java 进程,-Xms4G -Xmx4G -XX:MaxDirectMemorySize=6G并想验证这些更改是否正确应用,尤其是 6G 的直接内存。

我发现验证这一点的第一个解决方案是通过java它自己,但这只是报告了一个0,暗示我的新设置没有效果:

我后来发现的第二个解决方案是 via jinfo,这显然证实了6G我打算设置的:

我以前依赖于java -XX:+PrintFlagsFinal其他目的,但现在我想知道为什么它不返回预期值。为什么javajinfo返回不同的结果?