java - JVM 堆使用变化。这个图正常吗?

标签 java jvm load-testing



这是运行负载测试时预生产服务器的 JVM 内存使用情况(Xmx=10g)。我有几个问题。

  • 垃圾收集器几乎每 5 分钟运行一次。在这 5 分钟内,堆从 3GB 增长到 10GB。这种增长正常吗?如果没有,如何分析我的应用程序中的问题?
  • 在两个垃圾收集器周期内,平均堆使用量逐渐减少并突然增加。这是什么原因?
  • 在第二条评论中提到的逐渐下降中,没有平稳下降,有一个振动。这是什么原因?
  • 最佳答案

    这种堆利用模式有时被称为“锯”,看起来很健康,因为在您的情况下它保持一致。看看Memory Leaks: Fallacies and Misconceptions深入探讨常见堆利用模式及其问题的文章。

  • 答案取决于应用程序代码,对于某些应用程序是正常的,而对于其他应用程序则不是。弄清楚它的唯一方法是了解应用程序在做什么。
  • 您很可能正在运行并发 GC,只要有可用内存,它就不会执行完整的 GC 周期。锯齿图案的 dentry 可能是从幸存者空间移动到旧空间的活物体。
  • 同 1。

  • 您想了解一些基本参数并判断它们是否适合您的应用程序,而不是查看图片:
  • 新空间GC的持续时间和频率是多少
  • old space GC的持续时间和频率是多少
  • GC花费多少时间
  • GC 花费了多少 CPU %
  • GC 对应用程序延迟的影响
  • 关于java - JVM 堆使用变化。这个图正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61079322/

    相关文章:

    java - Android 共享首选项

    performance - JSR223 后处理器在 jmeter 中解析 json

    java - 当我们向 GC 索取信息或要求清理 GC 时。它是对所有人进行清理还是对执行者进行清理?

    visual-studio-2010 - VS2010 中的负载测试似乎没有报告结果

    ruby-on-rails - rails : test single file with rake test without resetting database

    java - 如何在java中删除Jtidy中的警告

    java - 在 Android 的 Java 中将此字符串分解为键/值字符串的最简单方法是什么?

    java - 最终类的编译器错误实例

    Java 类加载器俄罗斯套娃

    java - 为什么我的程序越来越慢?