Author: thomasm
Date: Fri Sep 13 07:07:02 2019
New Revision: 1866878
URL: http://svn.apache.org/viewvc?rev=1866878&view=rev
Log:
OAK-4521 Oak-run: add profiling and analysis tools (support jcmd Thread.print
and newer Java versions)
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java?rev=1866878&r1=1866877&r2=1866878&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java
Fri Sep 13 07:07:02 2019
@@ -33,6 +33,14 @@ import java.util.regex.Pattern;
public class ThreadDumpCleaner {
private static final String[] PATTERN_ARRAY = {
+ "Threads class SMR info:(?s).*?\n\n",
+
+ "JNI global refs.*\n\n",
+
+ "\"Reference Handler\"(?s).*?\n\n",
+
+ "\"C1 CompilerThread(?s).*?\n\n",
+
"\"Concurrent Mark-Sweep GC Thread\".*\n",
"\"Exception Catcher Thread\".*\n",
@@ -70,6 +78,9 @@ public class ThreadDumpCleaner {
"at sun.nio.ch.EPollArrayWrapper.epollWait(?s).*?\n\n",
"\".*?\".*?\n java.lang.Thread.State:.*\n\t" +
+ "at sun.nio.ch.EPoll.wait(?s).*?\n\n",
+
+ "\".*?\".*?\n java.lang.Thread.State:.*\n\t" +
"at java.lang.Object.wait(?s).*?\n\n",
"\".*?\".*?\n java.lang.Thread.State:.*\n\t" +
@@ -176,10 +187,17 @@ public class ThreadDumpCleaner {
if (slash < 0) {
return line;
}
- int at = line.indexOf("at ");
- if (at < 0 || at > atChar) {
+ int start = line.indexOf("at ");
+ if (start < 0 || start > atChar) {
return line;
}
+ start += 2;
+ // at java.lang.Object.wait([email protected]/Native Method) ->
+ // at java.lang.Object.wait(Native Method) ->
+ int open = line.indexOf('(');
+ if (open > start && open < atChar) {
+ start = open + 1;
+ }
// String moduleName = line.substring(at + 3, slash);
// module names seen so far:
@@ -190,7 +208,7 @@ public class ThreadDumpCleaner {
// platform/[email protected]
// removing the module name
- line = line.substring(0, at + 2) + line.substring(slash + 1);
+ line = line.substring(0, start) + line.substring(slash + 1);
return line;
}