java - UseConcMarkSweepGC 详细 gc 输出显示内存下降

标签 java garbage-collection

我有一个已启用 GC 日志记录的应用程序。堆似乎增长然后突然下降,但不记录 Full GC。如果我可以启用一些启动参数,它会告诉我什么 GC 事件正在减少堆大小?

我的环境: Linux 64 位、java 1.6.0_31、Java HotSpot(TM) 64 位服务器 VM(内部版本 20.6-b01,混合模式)

虚拟机参数: -server -Xms2560m -Xmx2560m -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m -XX:-PrintGC -XX: -PrintGCDetails -XX:-PrintGCTimeStamps -Xloggc:/xxxxx/gc.log -Dsun.rmi.dgc.client.gcInterval=86400000 -Dsun.rmi.dgc.server.gcInterval=86400000

3057.609: [GC 2397254K->2385777K(2619328K), 0.0572310 secs]
3058.898: [GC 2402801K->2391301K(2619328K), 0.0566620 secs]
3059.940: [GC 2408325K->2397156K(2619328K), 0.0534080 secs]
3059.995: [GC 2397265K(2619328K), 0.0069950 secs]
3065.635: [GC 2414180K->2404934K(2619328K), 0.0732700 secs]
3065.849: [GC 2419994K(2619328K), 0.1150630 secs]
3070.248: [GC 1593931K->1591825K(2619328K), 0.1084230 secs]
3072.440: [GC 1608552K->1606431K(2619328K), 0.0533140 secs]
3087.759: [GC 1623455K->1614544K(2619328K), 0.0215850 secs]

什么事件导致堆在输出 3065.849 和 3070.248 之间收缩?是否有一个 VM 参数可以记录它?我尝试添加 -verbose:gc 但这不会改变输出。

最佳答案

GC 分两步进行

1)次要收集(主要清理年轻一代)

2)主要 Collection

我猜你看到的是小 Collection 。这个tutorial可能会帮助您理解这些术语。

关于java - UseConcMarkSweepGC 详细 gc 输出显示内存下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636373/

相关文章:

java - Java WeakHashMap什么时候会清理null key?

c# - 我应该有多少个 GC 线程?

java - Kafka AdminClientConfig 忽略提供的配置

java - 如何分别使用 JBoss Logging 记录 JBoss 服务器特定日志和使用 log4j 记录应用程序特定日志?

java - encodeRedirectURL 生成警告

java - 任何可以将 json 反转为 java 类定义的工具

algorithm - 有哪些确定性垃圾收集算法?

java - 通过Java Config更改Springboot Actuator服务管理端口

java - 几天后 GC 暂停变得很长

scala - 构造函数参数是否得到GC校验?