Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.

Overview

JITWatch

Log analyser and visualiser for the HotSpot JIT compiler.

  • Video introduction to JITWatch video
  • Slides from my LJC lightning talk on JITWatch slides

For instructions and screenshots see the wiki

https://github.com/AdoptOpenJDK/jitwatch/wiki

The JITWatch user interface is built using JavaFX. This is included in the Oracle JDK. If you are using a JDK that does not include JavaFX (e.g. Azul Zulu, or some flavour of packaged OpenJDK on Linux) then you can download a pre-built OpenJFX jar from https://chriswhocodes.com and put it in your build classpath.

ant

ant clean compile test run

maven

mvn clean compile test exec:java

gradle

gradlew clean build run

Build an example HotSpot log

# Build the code first with ant / maven / IDE
./makeDemoLogFile.sh
Comments
  • Investigate supporting IBM J9 Testarossa JIT

    Investigate supporting IBM J9 Testarossa JIT

    IBM J9 VM is going open-source :)

    ref: http://www.slideshare.net/MarkStoodley/under-the-hood-of-the-testarossa-jit-compiler ref: https://twitter.com/mstoodle

    It can output JIT decisions using -Xjit:verbose,vlog=<file name>

    Investigate if Testarossa has relatable concepts and look into writing a parser for its log and support this VM/JIT in JITWatch.

    enhancement 
    opened by chriswhocodes 19
  • Missing assembly view

    Missing assembly view

    Hi @chriswhocodes - (thanks for developing this wonderful tool).

    Setup : Ubuntu 16.04 with Oracle JDK 1.8.151

    I am running the code on a server machine and using my local client machine to analyze the JIT log. Both the server and the client machine have identical OSes and JVM versions. The sever has hsdis, and the assembly is generated in the log. However, it is not shown (on the client machine) in the TriView plane.

    When I click on the compiled method, I see this pop up on the console

    17:19:35.598 [JavaFX Application Thread] WARN  o.a.j.c.CompilationUtil - No Task found in Compilation 1451
    17:19:35.599 [JavaFX Application Thread] WARN  o.a.j.c.CompilationUtil - No Task found in Compilation 1451
    

    image

    opened by animeshtrivedi 17
  • Digest JMH/perfasm-annotated hotspot.log

    Digest JMH/perfasm-annotated hotspot.log

    JMH had recently added the Linux perf + PrintAssembly internal profiler, and we also switched to optionally dumping the perf-annotated hotspot.log. It would be nice if JITWatch can digest it. It does not right now, since it trips over the leading whitespace from the perf annotations.

    Steps to produce the sample HS log:

     $ hg clone http://hg.openjdk.java.net/code-tools/jmh/ jmh
     $ mvn clean install -DskipTests
     $ java -Djmh.perfasm.saveLog=true -jar jmh-samples/target/benchmarks.jar ".*DeadCode.*" -wi 3 -i 3 -r 1 -f 1 -prof perfasm 
     $ vi ./org.openjdk.jmh.samples.JMHSample_08_DeadCode.measureRight-AverageTime.log
    
    opened by shipilev 16
  • Some Numberformat exceptions and a NPE

    Some Numberformat exceptions and a NPE

    Learned already a lot from jitwatch - thanks :)

    Some exceptions where thrown today for master (1.0.0-SNAPSHOT) and java 1.8.0_45:

    • the first ones are probably due to my German environment:
    23:39:21.116 [Thread-7] ERROR o.a.j.s.AttributeSuggestionWalker - Couldn't parse branch tag attribute 1,21666e+06
    java.lang.NumberFormatException: For input string: "1,21666e+06"
            at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) ~[na:1.8.0_45]
            at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[na:1.8.0_45]
            at java.lang.Double.parseDouble(Double.java:538) ~[na:1.8.0_45]
            at java.lang.Double.valueOf(Double.java:502) ~[na:1.8.0_45]
            at org.adoptopenjdk.jitwatch.suggestion.AttributeSuggestionWalker.handleBranchTag(AttributeSuggestionWalker.java:301) [jitwatch-1.0.0-SNAPSHOT.jar:na]
            at org.adoptopenjdk.jitwatch.suggestion.AttributeSuggestionWalker.processParseTag(AttributeSuggestionWalker.java:193) [jitwatch-1.0.0-SNAPSHOT.jar:na]
            at org.adoptopenjdk.jitwatch.suggestion.AttributeSuggestionWalker.processParseTag(AttributeSuggestionWalker.java:211) [jitwatch-1.0.0-SNAPSHOT.jar:na]
            at org.adoptopenjdk.jitwatch.suggestion.AttributeSuggestionWalker.processParseTag(AttributeSuggestionWalker.java:211) [jitwatch-1.0.0-SNAPSHOT.jar:na]
            at org.adoptopenjdk.jitwatch.suggestion.AttributeSuggestionWalker.visitTag(AttributeSuggestionWalker.java:367) [jitwatch-1.0.0-SNAPSHOT.jar:na]
            at org.adoptopenjdk.jitwatch.journal.JournalUtil.visitParseTagsOfLastTask(JournalUtil.java:91) [jitwatch-1.0.0-SNAPSHOT.jar:na]
    
    
    23:39:21.114 [Thread-7] ERROR o.a.j.s.AttributeSuggestionWalker - Unrecognised branch probability: 0,50343
    java.lang.NumberFormatException: For input string: "0,50343"
            at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) ~[na:1.8.0_45]
            at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[na:1.8.0_45]
            at java.lang.Double.parseDouble(Double.java:538) ~[na:1.8.0_45]
            at org.adoptopenjdk.jitwatch.suggestion.AttributeSuggestionWalker.handleBranchTag(AttributeSuggestionWalker.java:313) [jitwatch-1.0.0-SNAPSHOT.jar:na]
    
    
    • And a NPE:
    Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
            at org.adoptopenjdk.jitwatch.model.MetaClass.loadInnerClasses(MetaClass.java:135)
            at org.adoptopenjdk.jitwatch.model.MetaClass.getClassBytecode(MetaClass.java:112)
            at org.adoptopenjdk.jitwatch.ui.triview.TriView.loadBytecodeForCurrentMember(TriView.java:631)
            at org.adoptopenjdk.jitwatch.ui.triview.TriView.setMember(TriView.java:513)
            at org.adoptopenjdk.jitwatch.ui.triview.TriView.setMember(TriView.java:488)
            at org.adoptopenjdk.jitwatch.ui.JITWatchUI.openTriView(JITWatchUI.java:693)
            at org.adoptopenjdk.jitwatch.ui.suggestion.MemberTableCell$1.handle(MemberTableCell.java:63)
            at org.adoptopenjdk.jitwatch.ui.suggestion.MemberTableCell$1.handle(MemberTableCell.java:59)
            at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    
    
    opened by karussell 14
  • Can't display assembly of Graal log file

    Can't display assembly of Graal log file

    The attached log has been generated with Graal 0.27 from http://www.oracle.com/technetwork/oracle-labs/program-languages/downloads/index.html. I added hsdis from JDK 8. The VM options were

    -XX:+UnlockDiagnosticVMOptions
    -XX:+TraceClassLoading
    -XX:+LogCompilation
    -XX:+PrintAssembly
    -XX:LogFile=compilation8graal-0.5.1.txt
    

    If I click on com.github.marschall.charsequences.CharSequences#uuidFromCharSequence(CharSequence) I get

    Assembly not found. Was -XX:+PrintAssembly option used?
    

    The classes JAR can be found here https://search.maven.org/remotecontent?filepath=com/github/marschall/charsequences/0.5.1/charsequences-0.5.1-jar-with-test-dependencies.jar The source JAR can be found here https://search.maven.org/remotecontent?filepath=com/github/marschall/charsequences/0.5.1/charsequences-0.5.1-sources.jar

    This is the log compilation8graal-0.5.1.txt

    bug 
    opened by marschall 13
  • Can't see assembly nor bytecode

    Can't see assembly nor bytecode

    Hi! I'm unable to see the assembly nor the bytecode in the TriView. The sources are shown fine, so does the JIT journal.

    I'm using the VM flags recommended in the wiki:

    -XX:+UnlockDiagnosticVMOptions -XX:+TraceClassLoading -XX:+LogCompilation > -XX:+PrintAssembly

    This is the version of the JVM I'm using (with the HSDIS plugin).

    java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

    My OS is Debian 8 (Jessie) x64.

    I'm using the Java 8 binary download of JitWatch (my application is targeting Java 8).

    The HotSpot log file does outputs the assembly, here is an example:

    0x00007fd3994a649d: mov $0x1,%r10d 0x00007fd3994a64a3: jmpq 0x00007fd3994a630c 0x00007fd3994a64a8: mov %rdx,%rdi ;*synchronization entry ; -com.carrotsearch.hppc.ObjectObjectOpenHashMap::forEach@-1 (line 822)

    opened by dustContributor 13
  • NPE on

    NPE on "Chain" button

    Any attempt to open "Chain" view for any method results in NPE.

    Checked current "master" branch and tag "1.4.7".

    JDK version: 11.0.13.8, 11.0.15.10

    java.lang.NullPointerException
        at org.adoptopenjdk.jitwatch.ui.compilechain.CompileChainStage.buildTree (CompileChainStage.java:375)
        at org.adoptopenjdk.jitwatch.ui.compilechain.CompileChainStage.compilationChanged (CompileChainStage.java:132)
        at org.adoptopenjdk.jitwatch.ui.main.JITWatchUI.openCompileChain (JITWatchUI.java:1271)
        at org.adoptopenjdk.jitwatch.ui.triview.TriView$1.handle (TriView.java:161)
        at org.adoptopenjdk.jitwatch.ui.triview.TriView$1.handle (TriView.java:155)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent (CompositeEventHandler.java:86)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:234)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:191)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent (CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl (EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent (EventUtil.java:49)
        at javafx.event.Event.fireEvent (Event.java:198)
        at javafx.scene.Node.fireEvent (Node.java:8792)
        at javafx.scene.control.Button.fire (Button.java:203)
        at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased (ButtonBehavior.java:208)
        at com.sun.javafx.scene.control.inputmap.InputMap.handle (InputMap.java:274)
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent (CompositeEventHandler.java:247)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent (CompositeEventHandler.java:80)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:234)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:191)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent (CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl (EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent (EventUtil.java:54)
        at javafx.event.Event.fireEvent (Event.java:198)
        at javafx.scene.Scene$MouseHandler.process (Scene.java:3897)
        at javafx.scene.Scene.processMouseEvent (Scene.java:1878)
        at javafx.scene.Scene$ScenePeerListener.mouseEvent (Scene.java:2623)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run (GlassViewEventHandler.java:411)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run (GlassViewEventHandler.java:301)
        at java.security.AccessController.doPrivileged (Native Method)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2 (GlassViewEventHandler.java:450)
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock (QuantumToolkit.java:424)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent (GlassViewEventHandler.java:449)
        at com.sun.glass.ui.View.handleMouseEvent (View.java:557)
        at com.sun.glass.ui.View.notifyMouse (View.java:943)
        at com.sun.glass.ui.win.WinApplication._runLoop (Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3 (WinApplication.java:184)
        at java.lang.Thread.run (Thread.java:829)
    
    bug 
    opened by alexei-osipov 11
  • NullPointerException when parsing log

    NullPointerException when parsing log

    Hi,

    Using the latest code of jitwatch - I have a NPE in ParseUtil.java because componentType is null: if (componentType.isAssignableFrom(sigParamClass))

    I added a simple if and it seems that memParamClass is "boolean".

    I'm running 1.8.0 192.

    Let me know if need something else.

    Thanks

    opened by punx120 10
  • MetaMember not found for X

    MetaMember not found for X

    I am getting hundreds of errors like MetaMember not found for org.mypkg.benchmark.Compilation2Benchmarks$ fib$1, corresponding to the classes that I specifically want to analyze. 😄 I believe I've set the sources and classes correctly in config. The class and method do exist:

    $ javap -p org.mypkg.benchmark.Compilation2Benchmarks$ | grep fib$1
      private static final int fib$1(int);
    

    Where should I go from here?

    opened by aryairani 10
  • Save UI state when refreshing

    Save UI state when refreshing

    When in a workflow of tweaking code, collecting hotspot logs, then analysing with JITWatch, the clicks to navigate back to the method of interest interrupt the flow.

    It would be great if the UI could at least restore the selection of the main tree view. It would be better yet to re-open the TriView panel (assuming the method still exists in the most recent run.)

    The other productivity improvement would be to allow command line options to trigger the "Start" with a particular hotspot.log and opening of a TriView at a given method.

    opened by retronym 9
  • Parse Errors on MetaMember

    Parse Errors on MetaMember

    The attached file was generated with JDK 11 and generated the following parse errors. Jitwatch is built from the current master branch:

    Could not parse line 33060 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V
    Could not parse line 33509 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V
    Could not parse line 34372 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 34373 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
    Could not parse line 34376 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 34574 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 34575 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
    Could not parse line 34577 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V
    Could not parse line 34580 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
    Could not parse line 34746 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
    Could not parse line 35161 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 35358 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V
    Could not parse line 41020 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 41022 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 41311 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 41313 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 48056 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V
    Could not parse line 48289 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 48344 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
    Could not parse line 48399 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 &lt;init&gt; (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
    Could not parse line 48529 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 48587 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V
    Could not parse line 51117 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    Could not parse line 51176 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
    
    

    hotspot_pid212229.log

    opened by marschall 8
  • java.lang.VerifyError: Cannot inherit from final class

    java.lang.VerifyError: Cannot inherit from final class

    Hi,

    While parsing a hotspot log (jitwatch is using zulu11.58.23-ca-jdk11.0.16.1-win_x64) jitwatch stopped with the following exception:

    Exception in thread "Thread-3" java.lang.VerifyError: Cannot inherit from final class at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555) at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458) at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.adoptopenjdk.jitwatch.util.ClassUtil.loadClassWithoutInitialising(ClassUtil.java:55) at org.adoptopenjdk.jitwatch.util.ParseUtil.lateLoadMetaClass(ParseUtil.java:1115) at org.adoptopenjdk.jitwatch.model.JITDataModel.findMetaMember(JITDataModel.java:257) at org.adoptopenjdk.jitwatch.util.ParseUtil.findMemberWithSignature(ParseUtil.java:352) at org.adoptopenjdk.jitwatch.parser.AbstractLogParser.findMemberWithSignature(AbstractLogParser.java:250) at org.adoptopenjdk.jitwatch.parser.AbstractLogParser.handleMember(AbstractLogParser.java:576) at org.adoptopenjdk.jitwatch.parser.AbstractLogParser.handleMethodLine(AbstractLogParser.java:479) at org.adoptopenjdk.jitwatch.parser.AbstractLogParser.handleTagQueued(AbstractLogParser.java:373) at org.adoptopenjdk.jitwatch.parser.hotspot.HotSpotLogParser.handleTag(HotSpotLogParser.java:356) at org.adoptopenjdk.jitwatch.parser.hotspot.HotSpotLogParser.parseLogCompilationLines(HotSpotLogParser.java:154) at org.adoptopenjdk.jitwatch.parser.hotspot.HotSpotLogParser.parseLogFile(HotSpotLogParser.java:130) at org.adoptopenjdk.jitwatch.parser.AbstractLogParser.processLogFile(AbstractLogParser.java:366) at org.adoptopenjdk.jitwatch.parser.ILogParser.processLogFile(ILogParser.java:23) at org.adoptopenjdk.jitwatch.ui.main.JITWatchUI$1.run(JITWatchUI.java:253) at java.base/java.lang.Thread.run(Thread.java:829)

    I can't figure out how to go past this.

    Thanks

    opened by horiavmuntean 2
  • NPE occured from Tag.getAttributes()

    NPE occured from Tag.getAttributes()

    I was exploring the default add sample in the JITWatch and suddenly this exception was shown.

    Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot invoke "org.adoptopenjdk.jitwatch.model.Tag.getAttributes()" because "<local8>" is null
            at org.adoptopenjdk.jitwatch.hotthrow.HotThrowFinder.visitTag(HotThrowFinder.java:119)
            at org.adoptopenjdk.jitwatch.hotthrow.HotThrowFinder.visitTag(HotThrowFinder.java:215)
            at org.adoptopenjdk.jitwatch.compilation.CompilationUtil.visitParseTagsOfCompilation(CompilationUtil.java:89)
            at org.adoptopenjdk.jitwatch.hotthrow.HotThrowFinder.findHotThrows(HotThrowFinder.java:94)
            at org.adoptopenjdk.jitwatch.toplist.HotThrowTopListVisitable.visit(HotThrowTopListVisitable.java:34)
            at org.adoptopenjdk.jitwatch.treevisitor.TreeVisitor.walkPackage(TreeVisitor.java:48)
            at org.adoptopenjdk.jitwatch.treevisitor.TreeVisitor.walkPackage(TreeVisitor.java:39)
            at org.adoptopenjdk.jitwatch.treevisitor.TreeVisitor.walkPackage(TreeVisitor.java:39)
            at org.adoptopenjdk.jitwatch.treevisitor.TreeVisitor.walkTree(TreeVisitor.java:29)
            at org.adoptopenjdk.jitwatch.toplist.AbstractTopListVisitable.buildTopList(AbstractTopListVisitable.java:58)
            at org.adoptopenjdk.jitwatch.ui.toplist.TopListStage.buildTableView(TopListStage.java:208)
            at org.adoptopenjdk.jitwatch.ui.toplist.TopListStage.access$100(TopListStage.java:48)
            at org.adoptopenjdk.jitwatch.ui.toplist.TopListStage$3.changed(TopListStage.java:151)
            at org.adoptopenjdk.jitwatch.ui.toplist.TopListStage$3.changed(TopListStage.java:146)
            at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:360)
            at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
            at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:106)
            at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:113)
            at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147)
            at javafx.scene.control.ComboBoxBase.setValue(ComboBoxBase.java:151)
            at javafx.scene.control.ComboBox.updateValue(ComboBox.java:516)
            at javafx.scene.control.ComboBox$3.changed(ComboBox.java:499)
            at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:360)
            at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
            at javafx.beans.property.ReadOnlyObjectPropertyBase.fireValueChangedEvent(ReadOnlyObjectPropertyBase.java:80)
            at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(ReadOnlyObjectWrapper.java:102)
            at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:113)
            at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147)
            at javafx.scene.control.SelectionModel.setSelectedItem(SelectionModel.java:105)
            at javafx.scene.control.ComboBox$ComboBoxSelectionModel.lambda$new$0(ComboBox.java:556)
            at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:136)
            at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
            at javafx.beans.property.ReadOnlyIntegerPropertyBase.fireValueChangedEvent(ReadOnlyIntegerPropertyBase.java:78)
            at javafx.beans.property.ReadOnlyIntegerWrapper.fireValueChangedEvent(ReadOnlyIntegerWrapper.java:102)
            at javafx.beans.property.IntegerPropertyBase.markInvalid(IntegerPropertyBase.java:114)
            at javafx.beans.property.IntegerPropertyBase.set(IntegerPropertyBase.java:148)
            at javafx.scene.control.SelectionModel.setSelectedIndex(SelectionModel.java:69)
            at javafx.scene.control.SingleSelectionModel.updateSelectedIndex(SingleSelectionModel.java:215)
            at javafx.scene.control.SingleSelectionModel.select(SingleSelectionModel.java:149)
            at javafx.scene.control.skin.ComboBoxListViewSkin.lambda$createListView$10(ComboBoxListViewSkin.java:558)
            at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:348)
            at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
            at javafx.beans.property.ReadOnlyIntegerPropertyBase.fireValueChangedEvent(ReadOnlyIntegerPropertyBase.java:78)
            at javafx.beans.property.ReadOnlyIntegerWrapper.fireValueChangedEvent(ReadOnlyIntegerWrapper.java:102)
            at javafx.beans.property.IntegerPropertyBase.markInvalid(IntegerPropertyBase.java:114)
            at javafx.beans.property.IntegerPropertyBase.set(IntegerPropertyBase.java:148)
            at javafx.scene.control.SelectionModel.setSelectedIndex(SelectionModel.java:69)
            at javafx.scene.control.MultipleSelectionModelBase.select(MultipleSelectionModelBase.java:413)
            at javafx.scene.control.MultipleSelectionModelBase.clearAndSelect(MultipleSelectionModelBase.java:360)
            at javafx.scene.control.ListView$ListViewBitSetSelectionModel.clearAndSelect(ListView.java:1451)
            at com.sun.javafx.scene.control.behavior.CellBehaviorBase.simpleSelect(CellBehaviorBase.java:282)
            at com.sun.javafx.scene.control.behavior.CellBehaviorBase.doSelect(CellBehaviorBase.java:246)
            at com.sun.javafx.scene.control.behavior.CellBehaviorBase.mousePressed(CellBehaviorBase.java:176)
            at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
            at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
            at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
            at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
            at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
            at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
            at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
            at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
            at javafx.event.Event.fireEvent(Event.java:198)
            at javafx.scene.Scene$MouseHandler.process(Scene.java:3897)
            at javafx.scene.Scene.processMouseEvent(Scene.java:1878)
            at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2623)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
            at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
            at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
            at com.sun.glass.ui.View.handleMouseEvent(View.java:557)
            at com.sun.glass.ui.View.notifyMouse(View.java:943)
            at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
            at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
            at java.base/java.lang.Thread.run(Thread.java:833)
    opened by firststar91 3
  • After the SpringBoot project adds source and class to the config, the following error occurs when you click start

    After the SpringBoot project adds source and class to the config, the following error occurs when you click start

    After the SpringBoot project adds source and class to the config, the following error occurs when you click start

    hello~, I want to use JitWatch to help me analyze which code in my SpringBoot project is too high because which code is compiled and analyzed by JIT, but after pouring into the source code and class directory of the project according to wiki, there is an exception shown below. I don't know how to solve it for the time being, or whether there is a problem with my way of use. Please give me some advice. Thank you very much.

    jitwatch.out

    19:01:21.127 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.StringUtils'
    19:01:21.128 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.StringUtils'
    19:01:21.129 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.StringUtils'
    19:01:21.129 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.StringUtils'
    19:01:21.148 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ConcurrentReferenceHashMap$Segment'
    19:01:21.148 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ConcurrentReferenceHashMap$Segment'
    19:01:21.152 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.Assert'
    19:01:21.152 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.Assert'
    19:01:21.153 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ConcurrentReferenceHashMap$Segment'
    19:01:21.153 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.core.ResolvableType'
    19:01:21.153 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ConcurrentReferenceHashMap$Segment'
    19:01:21.154 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.core.ResolvableType'
    19:01:21.160 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ConcurrentReferenceHashMap'
    19:01:21.161 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ConcurrentReferenceHashMap'
    19:01:21.161 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.core.ResolvableType'
    19:01:21.161 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.util.ObjectUtils'
    19:01:21.161 [Thread-4] ERROR o.a.j.u.ParseUtil - ClassNotFoundException: 'org.springframework.core.ResolvableType'
    ......
    

    jitwatch.out.log

    jitlog jitwatch01 jitwatch2
    opened by CodeHourra 5
  • Fix code cache visualisation since segmented code cache

    Fix code cache visualisation since segmented code cache

    The code cache view is less useful since JDK9 introduced the segmented code cache. The compiled methods are much harder to spot visually.

    Need to obtain the correct address ranges for the native, profiled, and non-profiled segments and when viewing a compiled method, only show the address range for the segment containing that method.

    bug 
    opened by chriswhocodes 0
Releases(1.4.7)
Owner
AdoptOpenJDK
The Community and code behind the Build Farm which produces high quality, FREE OpenJDK (Java) binaries.
AdoptOpenJDK
Utilities for latency measurement and reporting

LatencyUtils A latency stats tracking package The LatencyUtils package includes useful utilities for tracking latencies. Especially in common in-proce

null 440 Nov 14, 2022
:chart_with_upwards_trend: Capturing JVM- and application-level metrics. So you know what's going on.

Metrics ?? Capturing JVM- and application-level metrics. So you know what's going on. For more information, please see the documentation Versions Vers

Dropwizard 7.7k Dec 30, 2022
Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)

GCViewer 1.36 GCViewer is a little tool that visualizes verbose GC output generated by Sun / Oracle, IBM, HP and BEA Java Virtual Machines. It is free

null 4.1k Jan 4, 2023
Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.

JITWatch Log analyser and visualiser for the HotSpot JIT compiler. Video introduction to JITWatch video Slides from my LJC lightning talk on JITWatch

AdoptOpenJDK 2.8k Jan 3, 2023
Numerical-methods-using-java - Source Code for 'Numerical Methods Using Java' by Haksun Li

Apress Source Code This repository accompanies Numerical Methods Using Java by Haksun Li (Apress, 2022). Download the files as a zip using the green b

Apress 5 Nov 20, 2022
Compiler of Java bytecode to JavaScript

TeaVM See documentation at the project web site. Useful links: Getting started Gallery Flavour source code repository Site source code repository Disc

Alexey Andreev 2.1k Jan 3, 2023
Java-Trading-Log-Project - A Trading Log to Journal Your Trades.

Abhi's Project - Trading Log Trading Background I am very passionate about trading. I have been studying the financial markets for a few years and hav

Abhigyan Dabla 0 Jul 18, 2022
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.

⚡ A powerful & easy to use chart library for Android ⚡ Charts is the iOS version of this library Table of Contents Quick Start Gradle Maven Documentat

Philipp Jahoda 36k Jan 9, 2023
An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & native view and interstitial dialog.

GFX-AdPromote An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & nat

SAID MOTYA 10 Dec 25, 2022
Tree View; Mind map; Think map; tree map; custom view; 自定义; 树状图;思维导图;组织机构图;层次图

GysoTreeView 【中文】【English】 ⭐ If ok, give me a star ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ Tree View; Mind map; Think map; tree map; 树状图;思维导图;组织机构图;层次图;树型图 A custom tree view for

怪兽N 303 Dec 30, 2022
Plugin for keycloak that serves as an event listener, displaying user information in the log when there are registration and login events

Keycloak - Event listener Details Plugin for keycloak that serves as an event listener, displaying user information in the log when there are registra

José alisson 2 Jan 14, 2022
Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.

Tinker Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk. Getting started Add t

Tencent 16.6k Dec 30, 2022
A Java library designed to make making decisions based on the current operating system easier.

Java OS Independence ...or JOSI for short, is a simple and lightweight Java library designed to make making decisions based on the current operating s

null 38 Dec 30, 2022
Inspect pmap -X output of a java process, requires Java11, likely not 100% accurate

java-pmap-inspector Inspect pmap -X output of a java process, requires Java 11, likely not 100% accurate. Usage examples $ pmap -X pid > pmap.txt; jav

Brice Dutheil 7 Jul 6, 2022
JNDI-Exploit is an exploit on Java Naming and Directory Interface (JNDI) from the deleted project fromthe user feihong on GitHub.

JNDI-Exploit JNDI-Exploit is a fork from the deleted project ftom the user feihong-cs on GitHub. To learn more about JNDI and what you can do with thi

Nil MALHOMME 4 Dec 6, 2022
A Java user-interface library with support for Minecraft.

interfaces Building interfaces since 2021. interfaces is a builder-style user interface library designed to make creation of flexible user interfaces

Incendo 54 Dec 24, 2022
A short assembly macro-processor script to simulate the process and show the different stages

A short assembly macro-processor script to simulate the process and show the different stages

Neopentene 2 Mar 9, 2022
Jssembly is a library that allows you to execute native assembly from Java.

jssembly Jssembly is a library that allows you to execute native assembly from Java via a JNI bridge. The goal is to provide wrappers and parsers for

David Titarenco 121 Jun 3, 2022
A simple fast search engine written in java with the help of the Collection API which takes in multiple queries and outputs results accordingly.

A simple fast search engine written in java with the help of the Collection API which takes in multiple queries and outputs results accordingly.

Adnan Hossain 6 Oct 24, 2022
Trust-java - Test Results Verification library for Java

TRUST - Test Results Verification library for Java The TRUST's primary goal is to provide the simple way of different test results verification. Gener

Serhii Shymkiv 2 Nov 19, 2017