2013-07-02 10 views
7

Sono abituato a vedere Java filo discariche che sembrano come la seguente, che è quello che è generato da Sun HotSpot JVM e loro derivati, come ad esempio OpenJDK:Quale JVM stampa un dump di thread come questo?

"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) 

Ora, per aiutare altri utenti usando il mio software, di tanto in tanto mi imbatto in un'altra forma di fili discariche come questo:

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) 

come si può vedere, il formato è molto diversa, ed inferiore. Non riporta sui blocchi che tiene, né riporta su quale oggetto è in attesa.

Qualcuno sa quale famiglia di JavaVM produce il 2 ° stile di tracce dello stack? Non ne ho mai usato uno da solo, e questo mi ha infastidito per un po '!

risposta

2

Questo tipo di dump di thread si presenta come risultato del lavoro di utilità jstack in Mac OS X. Questo potrebbe essere correlato alle funzionalità dell'implementazione JVM di Mac OS.

3

Questo è l'output di jstack (in Oracle JDK) quando viene eseguito con l'opzione -F.