8204163: Also detect concurrent GCs in MetaspaceBaseGC.java
Reviewed-by: eosterlund, pliden
This commit is contained in:
parent
a56e3ff761
commit
b95d16720f
@ -187,30 +187,22 @@ public class HighWaterMarkTest extends FirstGCTest {
|
|||||||
}
|
}
|
||||||
System.out.println("% GC has been invoked: " + gcCount + " times");
|
System.out.println("% GC has been invoked: " + gcCount + " times");
|
||||||
|
|
||||||
if (VMRuntimeEnvUtils.isVMOptionEnabled("UseG1GC") &&
|
if (maxMetaspaceFreeRatio <= 1) {
|
||||||
VMRuntimeEnvUtils.isVMOptionEnabled("ClassUnloadingWithConcurrentMark")) {
|
// min/max = 0/1 boundary value
|
||||||
System.out.println("% isG1ClassUnloading: true");
|
// GC should happen very often
|
||||||
if (gcCount != 0) {
|
checkGCCount(gcCount, 20, -1);
|
||||||
throw new Fault ("G1 should unload classes, full GC is not expected");
|
} else if (minMetaspaceFreeRatio >= 99) {
|
||||||
}
|
// min/max = 99/100 boundary value
|
||||||
|
// GC should happen very rare
|
||||||
|
checkGCCount(gcCount, -1, 2);
|
||||||
|
} else if (minMetaspaceFreeRatio >= 10 && maxMetaspaceFreeRatio <= 20) {
|
||||||
|
// GC should happen quite often
|
||||||
|
checkGCCount(gcCount, 3, 30);
|
||||||
|
} else if (minMetaspaceFreeRatio >= 70 && maxMetaspaceFreeRatio <= 80) {
|
||||||
|
// GC should happen quite often
|
||||||
|
checkGCCount(gcCount, 1, 3);
|
||||||
} else {
|
} else {
|
||||||
if (maxMetaspaceFreeRatio <= 1) {
|
// hard to estimate
|
||||||
// min/max = 0/1 boundary value
|
|
||||||
// GC should happen very often
|
|
||||||
checkGCCount(gcCount, 20, -1);
|
|
||||||
} else if (minMetaspaceFreeRatio >= 99) {
|
|
||||||
// min/max = 99/100 boundary value
|
|
||||||
// GC should happen very rare
|
|
||||||
checkGCCount(gcCount, -1, 2);
|
|
||||||
} else if (minMetaspaceFreeRatio >= 10 && maxMetaspaceFreeRatio <= 20) {
|
|
||||||
// GC should happen quite often
|
|
||||||
checkGCCount(gcCount, 3, 30);
|
|
||||||
} else if (minMetaspaceFreeRatio >= 70 && maxMetaspaceFreeRatio <= 80) {
|
|
||||||
// GC should happen quite often
|
|
||||||
checkGCCount(gcCount, 1, 3);
|
|
||||||
} else {
|
|
||||||
// hard to estimate
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -180,14 +180,13 @@ public abstract class MetaspaceBaseGC {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads gc.log file and counts GC induced by metaspace.
|
* Reads gc.log file and counts GC induced by metaspace.
|
||||||
* Note: this method doesn't work for ConcMarkSweep...
|
|
||||||
* @return how many times GC induced by metaspace has occurred.
|
* @return how many times GC induced by metaspace has occurred.
|
||||||
*/
|
*/
|
||||||
protected int getMetaspaceGCCount() {
|
protected int getMetaspaceGCCount() {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
try {
|
try {
|
||||||
for (String line: readGCLog()) {
|
for (String line: readGCLog()) {
|
||||||
if (line.indexOf("Pause Full") > 0 && line.indexOf("Meta") > 0) {
|
if (line.indexOf("Metadata GC ") > 0) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user