mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
support yourkit 2017 thread dump format
This commit is contained in:
@@ -31,6 +31,7 @@ import java.util.regex.Pattern;
|
||||
public class ThreadDumpParser {
|
||||
private static final Pattern ourThreadStartPattern = Pattern.compile("^\\s*\"(.+)\".+(prio=\\d+ (?:os_prio=[^\\s]+ )?tid=[^\\s]+ nid=[^\\s]+|[Ii][Dd]=\\d+) ([^\\[]+)");
|
||||
private static final Pattern ourYourkitThreadStartPattern = Pattern.compile("(.+) \\[([^\\[]*)]");
|
||||
private static final Pattern ourYourkitThreadStartPattern2 = Pattern.compile("(.+) State: (.+) CPU usage on sample: .+");
|
||||
private static final Pattern ourThreadStatePattern = Pattern.compile("java\\.lang\\.Thread\\.State: (.+) \\((.+)\\)");
|
||||
private static final Pattern ourThreadStatePattern2 = Pattern.compile("java\\.lang\\.Thread\\.State: (.+)");
|
||||
private static final Pattern ourWaitingForLockPattern = Pattern.compile("- waiting (on|to lock) <(.+)>");
|
||||
@@ -188,7 +189,7 @@ public class ThreadDumpParser {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static ThreadState tryParseThreadStart(final String line) {
|
||||
private static ThreadState tryParseThreadStart(String line) {
|
||||
Matcher m = ourThreadStartPattern.matcher(line);
|
||||
if (m.find()) {
|
||||
final ThreadState state = new ThreadState(m.group(1), m.group(3));
|
||||
@@ -197,14 +198,17 @@ public class ThreadDumpParser {
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
boolean daemon = line.contains(" [DAEMON]");
|
||||
if (daemon) {
|
||||
line = StringUtil.replace(line, " [DAEMON]", "");
|
||||
}
|
||||
|
||||
String noDaemon = StringUtil.trimEnd(line, " [DAEMON]");
|
||||
m = ourYourkitThreadStartPattern.matcher(noDaemon);
|
||||
m = ourYourkitThreadStartPattern.matcher(line);
|
||||
if (!m.matches()) m = ourYourkitThreadStartPattern2.matcher(line);
|
||||
if (m.matches()) {
|
||||
ThreadState state = new ThreadState(m.group(1), m.group(2));
|
||||
if (noDaemon.length() < line.length()) {
|
||||
state.setDaemon(true);
|
||||
}
|
||||
state.setDaemon(daemon);
|
||||
return state;
|
||||
}
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user