< prev index next >
src/share/vm/runtime/arguments.cpp
Print this page
rev 10500 : [backport] Rework ClassUnloading* flags handling
rev 10502 : [backport] ClassUnloadingWithConcurrentMark should be opt-in with Shenandoah
rev 10516 : [backport] Disable UseFastJNIAccessors for Shenandoah
rev 10583 : [backport] TLAB sizing policy should converge faster with Shenandoah
rev 10588 : [backport] Check and ensure that Shenandoah-enabled compilations succeed
* * *
[backport] Filter out not compilable methods to avoid false assertion
rev 10589 : [backport] Purge support for ShenandoahConcurrentEvacCodeRoots and ShenandoahBarriersForConst
rev 10592 : [backport] Fix Minimal and Zero builds
rev 10638 : [backport] Remove NMethodSizeLimit adjustment for Shenandoah
*** 1832,1841 ****
--- 1832,1877 ----
if (!FLAG_IS_DEFAULT(ShenandoahUncommit)) {
warning("AlwaysPreTouch is enabled, disabling ShenandoahUncommit");
}
FLAG_SET_DEFAULT(ShenandoahUncommit, false);
}
+
+ // If class unloading is disabled, no unloading for concurrent cycles as well.
+ // If class unloading is enabled, users should opt-in for unloading during
+ // concurrent cycles.
+ if (!ClassUnloading || !FLAG_IS_CMDLINE(ClassUnloadingWithConcurrentMark)) {
+ if (PrintGC) {
+ tty->print_cr("Consider -XX:+ClassUnloadingWithConcurrentMark if large pause times "
+ "are observed on class-unloading sensitive workloads");
+ }
+ FLAG_SET_DEFAULT(ClassUnloadingWithConcurrentMark, false);
+ }
+
+ // JNI fast get field stuff is not currently supported by Shenandoah.
+ // It would introduce another heap memory access for reading the forwarding
+ // pointer, which would have to be guarded by the signal handler machinery.
+ // See:
+ // http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-June/032763.html
+ FLAG_SET_DEFAULT(UseFastJNIAccessors, false);
+
+ // TLAB sizing policy makes resizing decisions before each GC cycle. It averages
+ // historical data, assigning more recent data the weight according to TLABAllocationWeight.
+ // Current default is good for generational collectors that run frequent young GCs.
+ // With Shenandoah, GC cycles are much less frequent, so we need we need sizing policy
+ // to converge faster over smaller number of resizing decisions.
+ if (FLAG_IS_DEFAULT(TLABAllocationWeight)) {
+ FLAG_SET_DEFAULT(TLABAllocationWeight, 90);
+ }
+
+ // Shenandoah needs more C2 nodes to compile some methods with lots of barriers.
+ // NodeLimitFudgeFactor needs to stay the same relative to MaxNodeLimit.
+ #ifdef COMPILER2
+ if (FLAG_IS_DEFAULT(MaxNodeLimit)) {
+ FLAG_SET_DEFAULT(MaxNodeLimit, MaxNodeLimit * 3);
+ FLAG_SET_DEFAULT(NodeLimitFudgeFactor, NodeLimitFudgeFactor * 3);
+ }
+ #endif
#endif
}
#if !INCLUDE_ALL_GCS
#ifdef ASSERT
*** 2156,2184 ****
if (FLAG_IS_DEFAULT(LogEventsBufferEntries)) {
FLAG_SET_DEFAULT(LogEventsBufferEntries, 250);
}
#if INCLUDE_ALL_GCS
- if (ShenandoahConcurrentEvacCodeRoots) {
- if (!ShenandoahBarriersForConst) {
- if (FLAG_IS_DEFAULT(ShenandoahBarriersForConst)) {
- warning("Concurrent code cache evacuation is enabled, enabling barriers for constants.");
- FLAG_SET_DEFAULT(ShenandoahBarriersForConst, true);
- } else {
- warning("Concurrent code cache evacuation is enabled, but barriers for constants are disabled. "
- "This may lead to surprising crashes.");
- }
- }
- } else {
- if (ShenandoahBarriersForConst) {
- if (FLAG_IS_DEFAULT(ShenandoahBarriersForConst)) {
- warning("Concurrent code cache evacuation is disabled, disabling barriers for constants.");
- FLAG_SET_DEFAULT(ShenandoahBarriersForConst, false);
- }
- }
- }
-
if (AlwaysPreTouch || ShenandoahAlwaysPreTouch) {
if (!FLAG_IS_DEFAULT(ShenandoahUncommitDelay)) {
warning("AlwaysPreTouch is enabled, disabling ShenandoahUncommitDelay");
}
FLAG_SET_DEFAULT(ShenandoahUncommitDelay, max_uintx);
--- 2192,2201 ----
< prev index next >