【问题标题】:Jboss GC not freeing up memoryJboss GC没有释放内存
【发布时间】:2017-02-12 11:18:57
【问题描述】:

我们在 Wildfly 8.2 中部署了一个企业应用程序,最小和最大堆设置为 1.5 GB。其中一项操作是导致将太多对象加载到堆中。尽管该对象在操作后被取消引用,但 jvm 堆使用量并没有下降。

但是,如果我在外部手动触发 GC(使用 jcmd),我会看到堆使用量大幅下降。为什么普通 GC 不像 GC.run 那样减少内存?

JVM 设置

-Xms1536m -Xmx1536m -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=128M -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djsse。 enableSNIExtension=false -Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000

【问题讨论】:

    标签: java memory-leaks garbage-collection jvm wildfly-8


    【解决方案1】:

    从外部触发的是 Major/Full GC,除非绝对必要,否则不会自动触发。为了避免臭名昭著的 GC 暂停,JVM 会尽可能长时间地在老一代中以垃圾为生。

    【讨论】:

    • 请注意,OP 正在减少 GDC 触发 Full GC 的频率,这间接导致了这种行为。 +1
    • 注意到了...但它也适用于 EJB 吗?它们应该在请求后被汇集和“清理”。我认为 DGC 更多是使用原始 RMI 的问题。
    • gdc 适用于 rmi,但无论您在做什么,它都能确保定期发生完整的 GC。
    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 2014-12-20
    • 2011-06-24
    • 2014-09-02
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多