gpt4 book ai didi

java - 永久空间 : Ideal behaviour to be achieved

转载 作者:行者123 更新时间:2023-12-01 14:16:20 24 4
gpt4 key购买 nike

我正在尝试分析/分析核心 JAVA 应用程序。

我正在使用 JConsole Eclipse MAT

我在 Perm-Gen 图表中观察到以下情况(在 Windows XP 计算机上记录的 1 小时内的数据):

代码缓存:

  • 录制开始时:7MB
  • 1 小时后:10.5 MB
  • 图表看起来像:斜线略微上升,间隔逐渐增加。

内存池永久代(Shared-rw):

  • 录制开始时:7MB
  • 1 小时后:7 MB
  • 图表看起来像:平行于 X 轴。

内存池永久代(Shared-r0):

  • 录制开始时:5.5MB
  • 1 小时后:5.5MB
  • 图表看起来像:平行于 X 轴。

内存池:

  • 录制开始时:21MB
  • 1 小时后:22.5 MB
  • 图表看起来像:斜线略微向上/向下,间隔逐渐增加。

我的问题是,

  • 对于上述每个类别,可以推断出什么 Perm-Gen 空间的行为?
  • 寻找上述每个类别的理想行为应该是什么?

此处的理想行为是指代表以下内容的状态:

  • 应用程序的性能处于最佳状态。
  • 应用程序不存在任何与内存相关的问题。
  • 无需改进代码即可提高资源利用率。

上述问题也适用于堆空间分析。

以下是补充说明:

  • 确实应该在与生产环境相同的环境中进行分析。但如果我能理解这里的真正目标是什么,那真的会有帮助。截至目前,我正在努力学习同样的内容。那么以后我会尝试在生产上去做。

  • 此外,我正在尝试比较两个代码库(一个是重构的,一个是旧的)。我想知道通过重构实现的好处有多大(作为定量数据)。我认为如果我在同一平台上记录结果,比较就会成立(无论生产还是开发)。

更新1:

  • 我还连续运行了 8 个多小时的应用程序。
  • 我使用GCViewer:1.31来获取GC信息。
  • 我附上了从 GCViewer 收集的数据。
  • 我观察到,每 30 秒就会发生一次 FULL GC 事件。由此得出的结论是,许多对象都是日志生活的。
  • 我需要更多信息。我真的不知道如何正确、完整地解释这些细节。

请查看附件。请提供意见。

enter image description here

最佳答案

一些建议:

1) 放弃 JConsole。 VisualVM 包含在 JDK 中,在各个方面都非常出色(并且包含桥接模式,因此您甚至可以使用旧插件,如果这就是让您继续使用 JConsole 的全部原因)。

2) 打开 GC 日志记录。您至少需要这些标志:

-Xloggc:(用于更全面的 GC 日志记录)-XX:+PrintGCDetails(用于更详细的输出)-XX:+PrintTenuringDistribution(显示 JVM 假定的保有阈值)

找到一个工具来分析日志 - 您需要关注对象的工作集以及 PermGen,即使后者是您主要关心的问题。 GCViewer 是免费的,或者有商业工具(完全披露 - 我在 jClarity 工作,该公司为此目的生产 Censum 工具)。

3) 您需要运行超过 1 小时。许多应用程序在很长一段时间内都不稳定。

4)再次查看您的数字,这看起来并没有什么异常/问题。为什么要调整 JVM 的这一点?系统的哪些方面表明这是一个严重的问题并且需要解决?您是如何确定这一点的?这个问题是如何表现出来的?

关于java - 永久空间 : Ideal behaviour to be achieved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18076886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com