publicstaticvoid doRecurTestWith(finalint times, int watch_frame) throws Exception { final String target_method_name_start = "recurTimes"; final ThreadPauser safepoint = new ThreadPauser(); Thread target = newThread( null,
() -> { try {
recurTimesA(times, safepoint);
System.out.println("Ran recurTimes(" + times + ") without errors!");
} catch (RecursionError e) {
System.out.println("Caught exception " + e + " while running recurTimes(" + times + ")");
}
}, "RecurTimes(" + times + ") watching: " + watch_frame + " runner.", // 4000 kb stack since ASAN can make us stack-overflow otherwise 4000 * 1024);
target.start();
safepoint.waitForOtherThreadToPause();
Suspension.suspend(target); // Safe block int cnt = 0;
StackTrace.StackFrameData target_frame = null; for (StackTrace.StackFrameData frame : StackTrace.GetStackTrace(target)) { if (frame.method.getName().startsWith(target_method_name_start)) { if (times - cnt == watch_frame) {
target_frame = frame; break;
} else {
cnt++;
}
}
} if (target_frame != null) {
FramePop.notifyFramePop(target, target_frame.depth);
} else {
System.out.println( "Unable to find stack frame for " + watch_frame + " depth of "
+ target_method_name_start);
}
Suspension.resume(target);
safepoint.wakeupOtherThread();
target.join();
}
publicstaticvoid run() throws Exception { // TODO Investigate what thread argument means for FramePop event enable. // Listen for events on all threads.
FramePop.enableFramePopEvent(
Test1923.class,
Test1923.class.getDeclaredMethod( "handleFramePop", Executable.class, Boolean.TYPE, Long.TYPE), null);
doRecurTestWith(10, 0);
doRecurTestWith(10, 5);
doRecurTestWith(10, 10);
doRecurTestWith(100, 95);
}
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.11Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-27)
¤
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.