【问题标题】:How to automate garbage Collection execution using java melody?如何使用 java melody 自动执行垃圾收集?
【发布时间】:2016-09-28 09:30:39
【问题描述】:

我正在使用 java melody 来监控生产环境中的内存使用情况。 要求是内存不应超过 256MB/512MB

我已经做了最大的代码优化,但使用量仍然是448MB/512MB,但是当我在 java melody 中手动执行垃圾收集器时,内存消耗是109MB/512MB

【问题讨论】:

  • '不应超过 256MB/512MB'。第一个/第二个数字是什么意思?最小最大?

标签: garbage-collection java-melody


【解决方案1】:

您可以在代码中使用这两个调用之一来调用垃圾回收(它们是等效的):

  • System.gc();
  • Runtime.getRuntime().gc();

最好将调用置于定期调用的 Runnable 中,具体取决于达到内存限制的速度。

【讨论】:

    【解决方案2】:

    为什么你真正关心堆的使用?只要设置 XMS(最大堆)就可以了。让 java 在合适的时候调用 GC。只要您有空闲堆,就为了拥有大量空闲堆而进行 GC 和释放堆是没有意义的。

    如果你想限制进程分配的内存 XMX 是不够的。您还应该限制本机内存。

    你应该关心的是

    • 内存泄漏、连续 Full GC、GC 饥饿
    • GC KPI:延迟、吞吐量、占用空间
    • 对象创建率、提升率、回收率……
    • GC 暂停时间统计:持续时间分布、平均值、计数、平均间隔、最小值/最大值、标准偏差
    • GC 原因统计信息:持续时间、百分比、最小/最大、总计
    • GC阶段相关统计:每个GC算法都有几个子阶段。 G1 示例:initial-mark、remark、young、full、concurrent mark、mixed

    有关更多技术细节,请参阅https://blog.gceasy.io/2017/05/30/improving-your-performance-reports/https://blog.gceasy.io/2017/05/31/gc-log-analysis-use-cases/。您还可以使用https://blog.gceasy.io/ 分析您的 GC 日志,这将帮助您了解 JVM 是如何使用内存的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2014-06-14
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多