On Mon, 15 Dec 2025 12:48:18 GMT, SilenceZheng66 <[email protected]> wrote:
>> @SilenceZheng66 Could you elaborate the issue, ideally, in a JBS ticket? (A >> reproducer/gc-log would be nice, but detailed description works as well.) > > @albertnetymk Sure. I will give detailed description here. > > GC:PS MarkSweep、PS Scavenge > > JVM configuraton: > -Xmx2g > -Xms256M > -XX:MetaspaceSize=256m > -XX:MaxMetaspaceSize=256m > -XX:+PrintGCDateStamps > -XX:+PrintGCDetails > -XX:-UseAdaptiveSizePolicy > -XX:+PrintAdaptiveSizePolicy > -XX:+HeapDumpBeforeFullGC > -XX:+HeapDumpOnOutOfMemoryError > -XX:HeapDumpPath=export/Logs/ > -Xloggc:/export/Logs/gclogs.log > > JVM version:25.191-b12, although it's an old version without maintenance, I > find out the problem might still in the latest version. > > Problem Description: > When starting a application(like SpringBoot), objects loading to VM > continuously, my CPU usage suddenly began to skyrocket, followed by a full GC > lasting over ten minutes with more than 2,700 occurrences. Examining the GC > logs revealed that prior to the full GC, several successful young GC events > had taken place until the old generation was completely filled. I read the > source code and find out when -XX:-UseAdaptiveSizePolicy was set, VM thread > can't expand psOldGen, only GC worker can expand psOldGen's size in that > condition. I assume that the transition from the younger generation to the > older generation has been successful, so that GC worker's expansion was not > reached, that made long term full GC happened. > > Check List: > 1. Container has enough place for heap expansion > 2. Xms and Xmx were setting differently, same configuration in Serial GC can > raise heap expansion > > GC log sample: > // Full GC Starting > [PSYoungGen: 76276K->10735K(76288K)] 244793K->181638K(251392K), 0.0078092 > secs] [Times: user=0.04 sys=0.00, real=0.01 secs] > 2025-12-10T14:11:58.663+0800: 24.604: [Heap Dump (before full gc): , > 0.0000482 secs]2025-12-10T14:11:58.663+0800: 24.604: [Full GC (Ergonomics) > [PSYoungGen: 10735K->0K(76288K)] [ParOldGen: 170902K->173351K(175104K)] > 181638K->173351K(251392K), [Metaspace: 107770K->107770K(1146880K)], 0.5258832 > secs] [Times: user=1.82 sys=0.00, real=0.52 secs] > 2025-12-10T14:11:59.268+0800: 25.210: [Heap Dump (before full gc): , > 0.0000684 secs]2025-12-10T14:11:59.269+0800: 25.210: [Full GC (Ergonomics) > [PSYoungGen: 65536K->0K(76288K)] [ParOldGen: 173351K->174276K(175104K)] > 238887K->174276K(251392K), [Metaspace: 109096K->109096K(1148928K)], 0.3031080 > secs] [Times: user=1.10 sys=0.01, real=0.30 secs] > 2025-12-10T14:11:59.710+0800: 25.651: [Heap Dump (before full gc): , > 0.0000752 secs]2025-12-10T14:11:59.710+0800: 25.651: [Full GC (Ergonomics) > [PSYoungGen: 65536K->0K(76288K)] [ParOldGen: 174276K->174980K(... I’m not very familiar with this output format. The following three flags have been superseded by `-Xlog:gc*`: -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintAdaptiveSizePolicy Could you try using `-Xlog:gc*` instead? I think that would make it easier for me to understand the issue. Additionally, the change from `8338977: Parallel: Improve heap resizing heuristics` should have significantly improved adaptive resizing behavior. Running with `-XX:-UseAdaptiveSizePolicy` is not a configuration we recommend. Would it be possible for you to rerun your benchmark using a build that includes `8338977`, with `UseAdaptiveSizePolicy` enabled? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25000#discussion_r2621257012
