问题标签 [java-mission-control]
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 - Jersey 2 中可能存在内存泄漏?
我最近将我的 REST API 从 Jersey 1 迁移到 Jersey 2(准确地说是 2.22.1)。该应用程序作为 Spring Boot 应用程序运行。该应用程序接收到相当大的流量。我使用 JMC(Java Mission Control)对应用程序进行了概要分析,并注意到 Annotations ( ) 消耗了大量内存getEntityAnnotations()
。jms屏幕截图中的更多详细信息:
从屏幕截图中您可以看到 312 个Annotation[]
对象拥有 1.55 GB 的内存(每个数组约 5 MB)。我在方法中有断点getEntityAnnotations()
并观察到Annotation[]
只包含 3 个注释(HTTP 方法、路径和消耗)。Annotation 对象只有几个字段。我无法解释这些字段很大的原因。调试器屏幕截图中的更多详细信息:
有没有人遇到过类似的问题?
此外,从 jms 屏幕截图中,我们可以观察到一半的内存来自Arrays.copyOf
. 这是因为类getEntityAnnotations()
中的方法OutboundMessageContext
克隆了entityAnnotations
数组。这个特定的实现已作为票证JERSEY-2072的一部分添加到球衣 2.5 中。
我正在使用 Java 1.8.0_60 和 spring boot 1.3.2.RELEASE。如果您需要有关应用程序或环境的任何其他详细信息,请告诉我
java - Java App Profiling 找出罪魁祸首类
我们有一个在服务器中运行的 java web 应用程序。它由tomcat托管。我启用了飞行记录器,我可以连接到 JMC 并记录飞行...
现在,我不确定如何找到使我的应用程序变慢的类。让我明确一点,通常服务器(60 个访问者)大约占 CPU 使用率的 10%。但有时它会变得非常消耗资源并继续使用几乎 100% 的 CPU(QUADCORE RAM:16GB)。但是访客很正常,大约 60 岁……仍然是那样的行为。我必须重新启动tomcat。
现在,我想找到造成这些资源匮乏情况的罪魁祸首。
java - 自定义 JFR Java 任务控制事件
我想在 jmc 中发出自定义事件 - 我遇到了关于 jfr 自定义事件的博客文章 - http://hirt.se/blog/?p=444。然而,作者强调,该功能将来可能会被弃用。由于 jmc 不是开源的,我无法检查它。博文中的信息是否仍然是最新的?
java - Java Mission Control 和 Flight Recorder 是否提供与 VisualVM 相同的功能?
Java 的(相对)新的内置性能监视器/分析器是 Mission Control。Oracle 文档宣传它们可以在生产中使用而不会导致性能下降(不到 2%):
工具链 [Mission Control + Flight Recorder] 使开发人员和管理员能够从本地运行或部署在生产环境中的 Java 应用程序收集和分析数据。
我已经使用jvisualvm
(VisualVM)很多年了,但由于假定警告它确实会产生性能开销,因此从未在生产环境中使用过。
所以我问:Mission Control(及其飞行记录器)和 VisualVM 之间有什么不同,可以让 MC/FR 不影响性能?还是它们不包含 VisualVM 提供的某些特性/功能?
stack-trace - Jrockit 堆栈跟踪
我需要知道如何从 JRockit 导出堆栈跟踪或至少扩展所有跟踪。
在 Oracle JRockit Mission Control 中打开一个 jfr 文件 转到 Events 选项卡 单击 Stack Traces
有什么方法可以一次展开所有堆栈跟踪并探索日志?或者无论如何我们可以导出跟踪?
hive - 分析 Apache Hive CLI
此链接Profling Hive CLI提供了有关如何使用 Java 任务控制分析 Hive CLI 的说明。步骤是
创建一个目录来保存分析器输出:
mkdir $HOME/profiles
创建一个别名,以便更容易重复:
alias debug='HADOOP_CLIENT_OPTS="-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,dumponexitpath=$HOME/profiles/"'
运行一些 hadoop 客户端命令来分析例如,分析 Hive CLI 启动(以便使用 -e 'exit;')以及 TRACE 输出:
debug hive --hiveconf hive.root.logger=TRACE,console -e 'exit;' 2&>&1 | tee $HOME/profiles/hive_trace.out
归档并收集步骤 1 中使用的目录
tar czvf profile_data.tgz $HOME/profiles
我的问题是
a) 在第 4 步之后,如何使用 java 任务控制来使用收集到的指标
b) 当我使用 2 和 3 中的配置设置启动 hive 时。为什么 Hive 在 java 任务控制台中不可见?
c) 有没有更好的方法来分析 Hive 的组件,例如 hive-exec、hive-metastore?
java - 如何通过 JMX 连接到远程 Docker 容器
我有一个在远程机器上的容器中运行的 Spring Boot 应用程序,我必须使用哪些 JVM 参数通过 Java Mission Control 或 JVisual VM(通过 JMX)连接到它?
java - 在 Java Mission Control 图表中放大 Y 轴
我最近记录了一个 java 程序的 Java Flight Recorder (JFR) 转储。当我使用 Java Mission Control (JMC) 打开它时,我可以调整 X 轴但不能调整 Y(在许多图表中)。我尝试翻转我的屏幕(ctrl + alt + 箭头键)并且它起作用了;-) 但是,我需要一个更合适的方法来做到这一点。
我所需要的只是获得更大的 JFR 转储 CPU 使用率图表。有没有办法做到这一点?