public void format(StringBuilder sb, ThreadSnapshotEvent e) { String timestamp = fmt.format(e.timestamp()); sb .append("Thread [") .append(e.threadId()) .append("] "); if (e.threadState() != null) { sb.append(e.threadState()).append(' '); } sb.append("at ").append(timestamp); if (e.threadName() != null) { sb.append(" - ").append(e.threadName()); } sb.append("\n"); StackFrameList trace = e.stackTrace(); for(StackFrame frame: trace) { sb.append(frame).append("\n"); } } }
@Override public CounterCollection getCounters() { return events.peekNext().counters(); }
public void feed(Iterable<ThreadSnapshotEvent> events) { for(ThreadSnapshotEvent e: events) { if (e.stackTrace() != null && e.stackTrace().depth() > 0) { String threadName = String.valueOf(e.threadName()); ThreadDump dump = thread(threadName); int[] trace = intern(e); dump.count(trace); } } }
private void copyToBuf(ThreadSnapshotEvent event) { eventBuf.loadFrom(event); // eventBuf.tags().put(JvmEvents.JVM_EVENT_KEY, JvmEvents.EVENT_THREAD_SNAPSHOT); if (event.threadId() >= 0) { eventBuf.counters().set(JvmEvents.THREAD_ID, event.threadId()); } if (event.threadName() != null) { eventBuf.tags().remove(JvmEvents.THREAD_NAME); eventBuf.tags().put(JvmEvents.THREAD_NAME, event.threadName()); } if (event.threadState() != null) { eventBuf.tags().remove(JvmEvents.THREAD_STATE); eventBuf.tags().put(JvmEvents.THREAD_STATE, event.threadState().toString()); } }
@Override public ThreadSnapshotEvent morph(ThreadSnapshotEvent event) { if (event.stackTrace() != null && !event.stackTrace().isEmpty()) { ++traceCounter; return event; } else { return null; } } }));
private int[] intern(ThreadSnapshotEvent e) { StackFrameList trace = e.stackTrace(); int[] r = new int[trace.depth() + 1]; for(int i = 0; i != trace.depth(); ++i) { int fp = trace.depth() - 1 - i; r[i] = intern(formater.toString(trace.frameAt(fp))); } if (e.threadState() == null) { // r = Arrays.copyOf(r, r.length - 1); r[r.length - 1] = intern("(???)"); } else { r[r.length - 1] = intern(e.threadState()); } return r; }
protected boolean evaluate(ThreadSnapshotEvent event) { if (event.threadName() != null) { matcher.reset(event.threadName()); return matcher.matches(); } else { return false; } } }
@Override public State getThreadState() { return events.peekNext().threadState(); }
@Override public ThreadSnapshotEvent morph(ThreadSnapshotEvent event) { return checker.evaluate(event.timestamp()) ? event : null; } }
@Override public long getThreadId() { return events.peekNext().threadId(); }
private void copyToBuf(ThreadSnapshotEvent event) { eventBuf.loadFrom(event); // eventBuf.tags().put(JvmEvents.JVM_EVENT_KEY, JvmEvents.EVENT_THREAD_SNAPSHOT); if (event.threadId() >= 0) { eventBuf.counters().set(JvmEvents.THREAD_ID, event.threadId()); } if (event.threadName() != null) { eventBuf.tags().remove(JvmEvents.THREAD_NAME); eventBuf.tags().put(JvmEvents.THREAD_NAME, event.threadName()); } if (event.threadState() != null) { eventBuf.tags().remove(JvmEvents.THREAD_STATE); eventBuf.tags().put(JvmEvents.THREAD_STATE, event.threadState().toString()); } }
@Override public StackFrameList getStackTrace() { return events.peekNext().stackTrace(); }
public void feed(Iterable<ThreadSnapshotEvent> events) { for(ThreadSnapshotEvent e: events) { if (e.stackTrace() != null && e.stackTrace().depth() > 0) { String threadName = String.valueOf(e.threadName()); ThreadDump dump = thread(threadName); int[] trace = intern(e); dump.count(trace); } } }
private int[] intern(ThreadSnapshotEvent e) { StackFrameList trace = e.stackTrace(); int[] r = new int[trace.depth() + 1]; for(int i = 0; i != trace.depth(); ++i) { int fp = trace.depth() - 1 - i; r[i] = intern(formater.toString(trace.frameAt(fp))); } if (e.threadState() == null) { // r = Arrays.copyOf(r, r.length - 1); r[r.length - 1] = intern("(???)"); } else { r[r.length - 1] = intern(e.threadState()); } return r; }
@Override public String getThreadName() { return events.peekNext().threadName(); }
@Override public State getThreadState() { return events.peekNext().threadState(); }
@Override public long getTimestamp() { return events.peekNext().timestamp(); }
@Override public long getThreadId() { return events.peekNext().threadId(); }
public void loadFrom(ThreadSnapshotEvent event) { copyCommonEventFrom(event); threadId(event.threadId()); threadName(event.threadName()); threadState(event.threadState()); stackTrace(event.stackTrace()); }
@Override public ThreadSnapshotEvent morph(ThreadSnapshotEvent event) { snap.loadFrom(event); snap.stackTrace(event.stackTrace().fragment(0, trimPoint)); return snap; } }