问题标签 [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.
java - 在 VM 已经启动后更改 java -Xmx
可能的重复:
在运行时设置 JVM 堆大小以
编程方式设置最大 Java 堆大小
我在我的计算机上运行了一个长期运行的 Java 作业,当它接近尾声时它的速度非常慢,因为它遇到了严重的内存压力并且垃圾收集器必须频繁运行。换句话说,我低估了-Xmx
这项工作所需的最大堆大小。
由于我不想重新启动作业,有没有办法让 JVM 在 JVM 已经启动后更改它的最大堆大小,例如使用jinfo -flag
或类似的东西?这可能吗?
我一直在尝试使用jinfo -flag +Xmx1024m
or的变体jinfo -flag Xmx=1024m
,它们都给了我以下例外。这是Debian 错误 #532538的症状(我正在使用受影响的 JVM 版本),还是这是预期的行为(-Xmx
以后不可能更改),还是我提供的标志jinfo
不正确?
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
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,混合模式)
java - 运行 jinfo 和 jmap 时的灾难性错误
当我对任何 Java 进程运行 jinfo 或 jmap 时,它将“暂停”Java 进程。对于长时间运行的过程,它是 100% 复制的。
以下是详细步骤:
- 选择一个运行超过 25 天的 Java 进程(它是有线的,因为这对新进程不起作用)。
- 运行 ps 以检查进程的状态,应该是预期的“Sl”。
- 运行 jinfo 或 jmap 到这个进程(BTY,jstack 没有这个问题)。
- 运行 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,混合模式)
java - java 与 jinfo 报告的 Java 选项 MaxDirectMemorySize 不同
我用新的内存选项重新启动了一个 Java 进程,-Xms4G -Xmx4G -XX:MaxDirectMemorySize=6G
并想验证这些更改是否正确应用,尤其是 6G 的直接内存。
我发现验证这一点的第一个解决方案是通过java
它自己,但这只是报告了一个0
,暗示我的新设置没有效果:
我后来发现的第二个解决方案是 via jinfo
,这显然证实了6G
我打算设置的:
我以前依赖于java -XX:+PrintFlagsFinal
其他目的,但现在我想知道为什么它不返回预期值。为什么java
和jinfo
返回不同的结果?