- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一台服务器,我无法在其上运行任何基于 GUI 的分析器(例如 jvisualvm)来监视正在运行的 Java 进程的堆。根据this answer , 我可以使用 jstat -gc <pid>
并查看 OU 和 OC 列以找出堆的使用和分配。
但我只是在另一台服务器上比较了 jvisualvm 和 jstat,它们显示的堆使用和分配数字并不相同。
Jvisualvm 显示 Java 进程为堆分配了大约 1GB,并使用了大约 500MB:
但是对于同一个进程,jstat 仅在 OC 列下显示大约 700MB,在 OU 列下显示大约 226MB:
# jstat -gc 39621
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
16384.0 17920.0 3984.0 0.0 322560.0 10320.4 699392.0 226295.2 83968.0 47921.1 11966 66.103 12 3.083 69.186
为什么 jvisualvm 和 jstat 显示不同的堆使用和分配数字?
最佳答案
对于 Java 8,jstat 实用程序已更新,并且对于
jstat –gc <PID>
在输出中有这些字段:
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
39936.0 29184.0 0.0 29035.4 273920.0 170661.5 699392.0 39235.9 98480.0 97022.7 8624.0 8163.3 63 0.925 38 2.363 3.289
堆使用情况
要获取当前堆使用情况,大约是jVisualJM中的值,需要加上以下值:
S0U: Survivor space 0 utilization (kB)
S1U: Survivor space 1 utilization (kB)
EU: Eden space utilization (kB)
OU: Old space utilization (kB)
查看Java 8 Virtual Machine Garbage Collection Tuning Guide ,堆似乎由“年轻”一代(Eden & Survivor 0 & 1 空间)和“老”一代(旧空间)组成。
元空间使用
要获取当前的元空间使用情况,大约是 jVisualJM 中的值,需要以下大小:
MU: Metaspace utilization (kB)
注意事项
无论出于何种原因,我从未能够在 jstat 和 jVisualJM 之间获得完全相同的值,但足够接近以允许自信地使用这两种工具。
JVM 内存池
有关 JVM 内存池的更多详细信息,请参阅此 StackOverflow question & answer涵盖 Java 7 和 8。
Java 8 Using JConsole guide 中也有一些信息但令人惊讶的是,这仍然提到了 Java 7 永久代空间而不是 Java 8 元空间。
关于java - Jstat 和 Jvisualvm 显示不同的堆使用/分配数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912101/
我正在 Java 中运行以下程序(通过 Eclipse IDE): package threaddemo; class Runner extends Thread{ @Override
是否有任何工具可以连接到远程 JVM 并将显示在 JVisualVM 的 Monitor 选项卡或 JConsole 的 Overview 选项卡中的信息记录到文件中? 我知道 AppDynamics
我看不到线程菜单选项卡,分析器和采样器也处于禁用状态并收到消息“此 JVM 不支持分析” 最佳答案 在生产服务器中,jvisualVM 的问题是,java 应用程序在 32 位 JDK1.8 上运行,
我搜索了它,但没有找到任何方法在应用程序终止后获取堆转储。 从 eclipse 中,我触发了使用 eclipse 插件开发创建新项目的过程。在代码级别,我有两种创建新项目的方法。我想比较这两种方法。
我有一个应用程序,我希望能够为 jvisualvm 提供我自己的图标和描述性文本。 (我不想配置 jvisualvm,只是从我的应用程序提供更好的元数据) 最好是在运行时,因为我们在运行时确定了不同的
我已经尝试在我的 JDK (1.6.0_15-b03) 中使用 jvisualvm.exe 重新加载插件目录,方法是 工具 > 插件 > 更新 > 重新加载目录 但是;无论我尝试什么代理配置(我也尝试
我发现JvisualVM中有两个插件,一个是sampler,另一个是profiler。 我也发现他们有一个相似的用户界面,但是结果有很大的不同,那么差异对他们来说意味着什么? 为什么它们有很大的不同?
我正在运行 Mac OSX Snow Leopard。 我一直使用 Mac OSX 的常规软件更新功能更新 Java。 我过去曾使用过 Java jvisualvm 工具并取得了巨大的成功。 今天早上
我正在使用 jvisualvm 分析 Web 应用程序。我可以看到各种方法需要多长时间,例如 methodA 需要 5 秒......但是,我无法双击此方法来查看 5 秒的去向。可以这么说,我可以“向
我正在使用 Java Visual VM 的内存采样功能,但我无法回答以下问题: 为什么创建了这么多实例? 为什么这些实例数和字节数不断增加? 例如,我创建了一个非常简单的 Java 程序如下: pu
这个问题已经有答案了: Generate a Java thread dump without restarting. (5 个回答) 已关闭 9 年前。 如果我想生成线程转储并将其记录在我的应用程序
这个问题已经有答案了: JVM sawtooth pattern when idle? what does the JVM do in the meantime? (2 个回答) 已关闭 6 年前。
我在jvisualvm中创建了线程转储。如何导出? 我找不到任何导出按钮。 最佳答案 对于答案,我建议您使用 ^A^C 选择全部并复制,并使用 ^V 粘贴到您喜欢的编辑器中。 (谢谢@SubOptim
我需要在应用程序内存使用高峰时获取内存快照 - 有没有简单的方法可以实现此目的? 谢谢 最佳答案 呃?除非您可以定量地说出峰值何时发生,否则您预计如何实现?如果每个时间点都可能是您想要保存的一个状态,
我的 java jar 只是大型程序使用的众多 jar 之一。我试图确定我的代码是否是内存泄漏的原因,或者我的代码之外是否存在其他问题。我正在使用 jvisualvm,并且已经确定了我所有的类,而且没
昨天我尝试使用 JVisualVM 分析 Java 应用程序。几分钟后,我收到操作系统发出的警告,称磁盘已满,当我了解到问题出在 JVisualVM 并停止它时,我“丢失”了大约 12Gb 的存储空间
简要阅读教程并使用 JVisualVM,我可以手动将它附加到长时间运行的服务器或 Swing 应用程序,但我也想将它用于运行时间不到一秒的短程序。 我想我可以让我的程序在控制台上阻塞,附加 JVisu
当我想分析一个从使用 jvisualvm 1.3.8 的 eclipse 启动的 java 程序时,我在 eclipse 控制台中收到错误消息: Software caused connection
我正在对一个不正常的关闭进行故障排除,所以我想获得一个在 jvisualvm(或其他)中运行的非守护线程的列表来寻找罪魁祸首。 最佳答案 jstack 转储所有线程,有一个文本会告诉它是否是守护进程
我正在使用 JRE1.7.0_25。不久前,我运行了由 webex session 强制执行的 Java 更新。似乎更新后,我无法再使用 jvisualvm 检查正在运行的 java 进程(进程已启动
我是一名优秀的程序员,十分优秀!