【问题标题】:Should HeapDumpBeforeFullGC be used in production environment?HeapDumpBeforeFullGC应该在生产环境中使用吗?
【发布时间】:2018-07-03 12:17:17
【问题描述】:

在完全 gc 发生后,我们可能想知道它是如何发生的。没有heap dump,我觉得很难做到,但是在生产环境中,我们通常无法及时得到。所以我想在我的应用程序在线运行时使用 HeapDumpBeforeFullGC

我的问题是 HeapDumpBeforeFullGC 应该在产品环境中使用吗?会不会带来一些不好的影响(如果不考虑磁盘使用)? 或者我们有其他有效的方法来找出导致生产环境中完全 gc 的原因吗?

谢谢!

【问题讨论】:

  • 您是否遇到过发生完整 GC 的问题并且无法诊断它们?
  • 是的,而且这些问题在测试环境中很难重现。所以我想要一种方法来诊断它们。
  • 嗯,它不仅占用磁盘空间,还需要时间来制作。记住一句老话,“如果它没有坏,就不要试图修复它”。仅当您认为确实存在问题时才使用该选项。
  • @Holger 那就是说full gc发生时,我们只能尝试在测试环境中重现它?你有什么建议来处理这个问题吗?我想要一种更有效的方法来找出完整的 gc 是如何发生的。谢谢!
  • 不,当你知道有问题,只能在生产环境中重现时,我想说,在生产环境中没有办法使用该选项,直到你收集了足够的信息.它会带来一些“坏影响”,您可以准确地知道是哪一个,因此,您可以决定解决问题是否值得在一段时间内接受坏影响。

标签: garbage-collection heap-dump


【解决方案1】:

如果您认为完整 GC 是生产中的问题,那么可以,添加堆转储可能会有所帮助。但这会使完整 GC 的暂停时间变得更糟。

作为替代方案,您可以打开详细的 GC 日志记录,这通常是确定一般原因(堆大小不足、泄漏、分配峰值、配置错误、交换......)的良好开端。您还可以使用侵入性较小的分析器(例如 async-profiler 或 jmc)来发现过多的分配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多