首页 文章

Jboss GC没有释放内存

提问于
浏览
0

我们在wildfly 8.2中部署了一个企业应用程序,最小和最大堆设置为1.5 GB . 其中一个操作导致将太多对象加载到堆中 . 尽管在操作之后对象被取消引用,但jvm堆的使用率却没有降低 .

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

JVM settings

-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

1 回答

  • 2

    从外部触发的是Major / Full GC,除非绝对必要,否则不会自动触发 . 为了避免臭名昭着的GC暂停,JVM试图在老一代中尽可能地利用垃圾来维持生计 .

相关问题