In JDK-8372150, we've moved around and simplified the GCArguments interface, but we missed to account for the card table constraint in G1's conservative heap alignment calculation.
Without accounting for the card table constraint, we hit the following assertion:
# Internal Error (jdk/src/hotspot/share/memory/universe.cpp:975), pid=1851835, tid=1851836
# assert(alignment <= Arguments::conservative_max_heap_alignment()) failed: actual alignment 67108864 must be within maximum heap alignment 33554432
in tests which use -XX:GCCardSizeInBytes=1024 and G1 sinceJDK-8372150. Seems like only G1 is affected.
V [libjvm.so+0x1f6af84] Universe::reserve_heap(unsigned long, unsigned long, unsigned long)+0x3d4 (universe.cpp:975)
V [libjvm.so+0xdd0800] G1CollectedHeap::initialize()+0x150 (g1CollectedHeap.cpp:1460)
V [libjvm.so+0x1f6a598] Universe::initialize_heap()+0xc8 (universe.cpp:962)
V [libjvm.so+0x1f6a72c] universe_init()+0x11c (universe.cpp:893)
V [libjvm.so+0x1080430] init_globals()+0xa0 (init.cpp:138)
V [libjvm.so+0x1f12cac] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3fc (threads.cpp:607)
Note that page_size=64K on PPC64 which is used without any large page option enabled.
The change in arguments.cpp doesn't fit to G1's calculate_heap_alignment which still depends on CardTable::ct_max_alignment_constraint().
Can be reproduced on PPC64 by:
java -XX:+UnlockDiagnosticVMOptions -XX:GCCardSizeInBytes=1024 -version
Without accounting for the card table constraint, we hit the following assertion:
# Internal Error (jdk/src/hotspot/share/memory/universe.cpp:975), pid=1851835, tid=1851836
# assert(alignment <= Arguments::conservative_max_heap_alignment()) failed: actual alignment 67108864 must be within maximum heap alignment 33554432
in tests which use -XX:GCCardSizeInBytes=1024 and G1 since
V [libjvm.so+0x1f6af84] Universe::reserve_heap(unsigned long, unsigned long, unsigned long)+0x3d4 (universe.cpp:975)
V [libjvm.so+0xdd0800] G1CollectedHeap::initialize()+0x150 (g1CollectedHeap.cpp:1460)
V [libjvm.so+0x1f6a598] Universe::initialize_heap()+0xc8 (universe.cpp:962)
V [libjvm.so+0x1f6a72c] universe_init()+0x11c (universe.cpp:893)
V [libjvm.so+0x1080430] init_globals()+0xa0 (init.cpp:138)
V [libjvm.so+0x1f12cac] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3fc (threads.cpp:607)
Note that page_size=64K on PPC64 which is used without any large page option enabled.
The change in arguments.cpp doesn't fit to G1's calculate_heap_alignment which still depends on CardTable::ct_max_alignment_constraint().
Can be reproduced on PPC64 by:
java -XX:+UnlockDiagnosticVMOptions -XX:GCCardSizeInBytes=1024 -version
- caused by
-
JDK-8372150 Parallel: Tighten requirements around heap sizes with NUMA and Large Pages
-
- Resolved
-
- links to
-
Commit(master)
openjdk/jdk/3f046f6d
-
Review(master)
openjdk/jdk/28572