String getClassName() { return classname;
}
String getMethodName() { return methodname;
}
String getFileName() { int i = classname.lastIndexOf('.'); int j = classname.lastIndexOf('$');
String name = classname.substring(i+1, j >= 0 ? j : classname.length()); return name + ".java";
}
@Override public String toString() { return classname + "." + methodname + "(" + getFileName() + ")";
}
}
staticvoid test() {
CallFrame[] callStack = new CallFrame[] { new CallFrame(Thread.class, "getStackTrace"), new CallFrame(DumpStackTest.class, "test"), new CallFrame(DumpStackTest.class, "main"), // if invoked from jtreg new CallFrame("jdk.internal.reflect.DirectMethodHandleAccessor", "invoke"), // non-public class new CallFrame(Method.class, "invoke"), new CallFrame(Thread.class, "run"),
};
staticvoid getStackTrace(CallFrame[] callStack) { // this method is the top of the stack
callStack[0] = new CallFrame(DumpStackTest.class, "getStackTrace");
staticvoid consumeLambda() {
CallFrame[] callStack = new CallFrame[]{ new CallFrame(Thread.class, "getStackTrace"), new CallFrame(DumpStackTest.class, "consumeLambda"), new CallFrame(DumpStackTest.class, "lambda$testLambda$0"), new CallFrame(DumpStackTest.class, "testLambda"), new CallFrame(DumpStackTest.class, "main"), // if invoked from jtreg new CallFrame("jdk.internal.reflect.DirectMethodHandleAccessor", "invoke"), new CallFrame(Method.class, "invoke"), new CallFrame(Thread.class, "run")
};
assertStackTrace(Thread.currentThread().getStackTrace(), callStack);
DumpStackTest.getStackTrace(callStack);
}
staticvoid methodInvoke() {
CallFrame[] callStack = new CallFrame[] { new CallFrame(Thread.class, "getStackTrace"), new CallFrame(DumpStackTest.class, "methodInvoke"), new CallFrame("jdk.internal.reflect.DirectMethodHandleAccessor", "invoke"), new CallFrame(Method.class, "invoke"), new CallFrame(DumpStackTest.class, "testMethodInvoke"), new CallFrame(DumpStackTest.class, "main"), // if invoked from jtreg new CallFrame("jdk.internal.reflect.DirectMethodHandleAccessor", "invoke"), new CallFrame(Method.class, "invoke"), new CallFrame(Thread.class, "run")
};
assertStackTrace(Thread.currentThread().getStackTrace(), callStack);
DumpStackTest.getStackTrace(callStack);
}
staticvoid methodHandle() {
CallFrame[] callStack = new CallFrame[]{ new CallFrame(Thread.class, "getStackTrace"), new CallFrame(DumpStackTest.class, "methodHandle"), new CallFrame(DumpStackTest.class, "testMethodHandle"), new CallFrame(DumpStackTest.class, "main"), // if invoked from jtreg new CallFrame("jdk.internal.reflect.DirectMethodHandleAccessor", "invoke"), new CallFrame(Method.class, "invoke"), new CallFrame(Thread.class, "run")
};
assertStackTrace(Thread.currentThread().getStackTrace(), callStack);
DumpStackTest.getStackTrace(callStack);
}
for (int i = 0, j = 0; i < actual.length; i++) { // filter test framework classes if (actual[i].getClassName().startsWith("com.sun.javatest.regtest")) continue;
assertEquals(actual[i], expected[j++], i);
}
} staticvoid assertEquals(StackTraceElement actual, CallFrame expected, int idx) { if (!actual.getClassName().equals(expected.getClassName()) ||
!actual.getFileName().equals(expected.getFileName()) ||
!actual.getMethodName().equals(expected.getMethodName())) { thrownew RuntimeException("StackTraceElements mismatch at index " + idx + ". Expected [" + expected + "], but get [" + actual + "]");
}
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.38 Sekunden
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.