Which JVM prints a stream dump in this way?

I'm used to seeing Java thread dumps that look like this: this is the one generated by the Sun HotSpot JVM and their derivatives, such as OpenJDK:

"main" prio=10 tid=0x00007f4020009000 nid=0x538c in Object.wait() [0x00007f402891f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0000000614ea64e8> (a java.lang.Object) at java.lang.Object.wait(Object.java:503) at org.eclipse.jetty.util.thread.QueuedThreadPool.join(QueuedThreadPool.java:386) - locked <0x0000000614ea64e8> (a java.lang.Object) at org.eclipse.jetty.server.Server.join(Server.java:398) at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:531) at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364) at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:528) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 

Now, helping other users using my software, I sometimes come across another form of stream dumps, such as:

 Thread 9255: (state = BLOCKED) - sun.reflect.annotation.AnnotationType.getInstance(java.lang.Class) @bci=0, line=63 (Interpreted frame) - sun.reflect.annotation.AnnotationParser.parseAnnotation(java.nio.ByteBuffer, sun.reflect.ConstantPool, java.lang.Class, boolean) @bci=94, line=202 (Interpreted frame) - sun.reflect.annotation.AnnotationParser.parseAnnotations2(byte[], sun.reflect.ConstantPool, java.lang.Class) @bci=39, line=69 (Compiled frame) - sun.reflect.annotation.AnnotationParser.parseAnnotations(byte[], sun.reflect.ConstantPool, java.lang.Class) @bci=11, line=52 (Compiled frame) - java.lang.Class.initAnnotationsIfNecessary() @bci=22, line=3070 (Interpreted frame) - java.lang.Class.getAnnotation(java.lang.Class) @bci=13, line=3029 (Interpreted frame) - com.google.inject.internal.Annotations.isRetainedAtRuntime(java.lang.Class) @bci=3, line=57 (Interpreted frame) - com.google.inject.Key.ensureRetainedAtRuntime(java.lang.Class) @bci=1, line=362 (Interpreted frame) - com.google.inject.Key.strategyFor(java.lang.annotation.Annotation) @bci=15, line=339 (Interpreted frame) - com.google.inject.Key.get(com.google.inject.TypeLiteral, java.lang.annotation.Annotation) @bci=6, line=274 (Interpreted frame) - com.google.inject.assistedinject.FactoryProvider2.assistKey(java.lang.reflect.Method, com.google.inject.Key, com.google.inject.internal.Errors) @bci=14, line=522 (Interpreted frame) - com.google.inject.assistedinject.FactoryProvider2.<init>(com.google.inject.Key, com.google.inject.assistedinject.BindingCollector) @bci=306, line=235 (Interpreted frame) 

As you can see, the format is completely different and inferior. It does not report blocked locks and does not report which object it is waiting for.

Does anyone know which JavaVM family creates the second stack trace style? I never used it myself, and it distorted me a little!

+7
java thread-dump
source share
2 answers

This is the output of jstack (in Oracle JDK) when launched with the -F option.

+3
source share

This thread dump style looks like the result of jstack under Mac OS X This may be due to features of the JVM implementation for Mac OS.

+2
source share

All Articles