我们正在运行Java应用程序,该应用程序用作24/7全天候运行的监督系统。我们遇到了一些内存问题,因此我创建了一个jmap转储,以便分析它。在创建了带有live标志的第二个转储后,GC也在应用程序中运行,它的内存使用率也很低(这个进程现在已经运行了6个月了)所以我的问题是为什么在jmap转储之后GC不是由进程自己运行的,进程在那之后正常运行并且它的内存使用正常?OpenJDK运行时环境(build 11.0.7+10-post-Ubuntu-3ubuntu 1)是版本。
nhaq1z211#
“live”选项强制执行完全收集,然后尝试缩减为堆保留的内存总量。自动GC避免执行完全收集,因此保留的内存不一定会减少。具体的行为取决于您使用的GC(G1是默认值)和您可能提供的任何其他设置。
1条答案
按热度按时间nhaq1z211#
“live”选项强制执行完全收集,然后尝试缩减为堆保留的内存总量。自动GC避免执行完全收集,因此保留的内存不一定会减少。具体的行为取决于您使用的GC(G1是默认值)和您可能提供的任何其他设置。