我习惯于看到如下所示的 Java线程转储,这是由Sun HotSpot JVM及其衍生产品(如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)

现在,在协助其他用户使用我的软件时,我偶尔会遇到另一种形式的线程转储,如下所示:

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[],java.lang.class) @bci=39,line=69 (Compiled frame)
 - sun.reflect.annotation.AnnotationParser.parseAnnotations(byte[],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)

正如你所看到的,格式是完全不同的,而且是次等的.它不会报告它所持有的锁,也不会报告它正在等待的对象.

有谁知道什么样的JavaVM系列产生第二种堆栈跟踪样式?我自己从未使用过,这一直困扰着我!

解决方法

这是使用-F选项运行时jstack(在Oracle JDK中)的输出.

java – 哪个JVM打印出这样的线程转储?的更多相关文章

  1. ios – React native error – react-native-xcode.sh:line 45:react-native:command not found命令/ bin/sh失败,退出代码127

    尝试构建任何(新的或旧的)项目时出现此错误.我的节点是版本4.2.1,react-native是版本0.1.7.我看过其他有相同问题的人,所以我已经更新了本机的最新版本,但是我仍然无法通过xcode构建任何项目.解决方法要解决此问题,请使用以下步骤:>使用节点版本v4.2.1>cd进入[你的应用]/node_modules/react-native/packager>$sh./packager.s

  2. xcode – XCTest一个元组

    我正在尝试构建一个单元测试:但是Xcode给了我一个错误:无法使用类型的参数列表调用’XCTAssertEqual’是否有不同的方法来测试元组而不提取其成员并单独测试?解决方法XCTAssertEqual要求传递给它的两个参数是Equatable,您可以从方法签名中看到它们.注意,expression1返回T?,T必须是Equatable:但是Swifttuplesaren’tEquatable,所以你不能将它们与XCTAssertEqual一起使用.元组确实有一个==方法–它们只是不符合协议–所以你可以

  3. swift中方便调试的日志输出

    ///输出日志//////-parametermessage:日志消息///-parameterlogError:错误标记,默认是false,如果是true,发布时仍然会输出///-parameterfile:文件名///-parametermethod:方法名///-parameterline:代码行数funcprintLog{iflogError{print}else{#ifDEBUGprint#endif}}2.当发布的时候,如图讲-DDEBUG删除就可以了

  4. Swift中的打印日志的配置

    Swift中的打印日志的配置

  5. Swift日志打印

    publicfuncBMLog(message:T,file:String=FILE,method:String=FUNCTION,line:Int=LINE){#ifDEBUGprint(“((fileasNsstring).lastPathComponent)[line:(line)],(method):(message)”)#endif}

  6. Swift 下调试小技巧(备忘)iOS

    自定义log你是否经常出现print一大堆不知道那个是哪个?

  7. 将可选类型转换为错误抛出

    作者:EricaSadun,原文链接,原文日期:2016-10-07译者:wiilen;校对:Cee;定稿:CMBSoroushKhanlou曾写道:「很多时候我希望可选类型并不存在,“结果”就只是“结果”」。为延迟计算保留autoclosure。将全局函数放入类型中,使之称为静态成员。嵌套的错误声明。错误应能给你更多提示,而不是只显示一个名字。在声明了多行的复杂构造器之后使用Allman风格。

  8. NSLog有一个Swift替代(@“%s”,__PRETTY_FUNCTION__)

    虽然Swift不支持宏(我想),我仍然想使用一个通用的日志语句,包括被调用的函数的名称。__LINE__–Int–出现它的行号。__COLUMN__–Int–它开始的列号。__FUNCTION__–String–声明的名称。

  9. Swift中的宏?

    Swift目前是否支持宏,或者有未来计划要添加支持吗?在这种情况下,应为“宏”参数添加默认值。Swift2.2及更高版本Swift2.1和更低版本这是fatalError和assert函数做的。除了在另一个答案中已经提到的条件编译,没有其他宏。

  10. android – 基于JVM的语言,没有语言运行时

    ProGuard可以删除特定程序中未使用的部分运行时.如果速度和时间非常关键,另一种方法是使用NDK.

随机推荐

  1. 使用序列化将对象传递给另一个JVM – 相同的Java版本和jar(都运行我们的应用程序)

    但是想使用纯序列化到bytearray然后进行编码,将它从jvm1中的servlet1发送到jvm2中的servlet2局域网,在两个J2EE应用程序中设置相同的Java版本和jar)基本步骤是:–>将任何Serializable对象序列化为字节数组并生成字符串.确切的代码见下文>Base64输出1.是否需要基于64或可以跳过第2步?

  2. 所有JVM /系统中的Java,Object.hashCode()结果常量?

    Object.hashCode()的输出是否必须在同一个对象的所有JVM实现上相同?例如,如果“test”.hashCode()在1.4上返回1,它是否可能在1.6上返回2.或者如果操作系统不同,或者实例之间存在不同的处理器架构,该怎么办?

  3. Clojure的STM模型可以在多个JVM上运行吗?

    我知道Clojure在多核计算机上运行良好,但我想知道它是否适用于在多台计算机上分布的JVM集群?

  4. java – 加载时出现Eclipse jvm.dll错误

    解决方法按照评论中的要求.您的eclipse版本正在搜索jdk的x86版本.您应该检查您的eclipse是否是64位版本,如果没有,切换到64位jvm.

  5. java – 什么JVM优化导致这些性能结果?

    执行JavaREST服务性能测试我看到一个意外的模式:在每次调用中创建并返回相同值对象的方法比仅返回存储在类或对象字段中的值对象的另一个版本运行得更快.码:字节代码:>内联(更快):getstatic,invokestatic,invokevirtual,areturn>静态归档(较慢):getstatic,areturn>对象字段(较慢):aload,getfield,areturn性能(使用A

  6. java – JVM是否有计划在运行时支持泛型?

    你知道,就像CLR一样.有人甚至承认缺乏运行时通用信息是一个问题,并努力解决它?解决方法Java的设计者选择此解决方案来保持向后兼容性.从那时起,存在更多的Java代码,因此破坏向后兼容性会产生更糟糕的后果.所以我怀疑他们会改变他们的想法.

  7. 如何为多个jvm支持创建单例java类?

    任何想法,如何实现?

  8. java – 强制jvm返回本机内存

    参见英文答案>JVMsendingbackmemorytoOS3个我不时在需要大量内存的eclipse任务中运行.所以jvm在任务运行时吞下大约2-3GB的RAM,没关系.但是一旦jvm占用了那个内存它就不会释放它而且我有一种情况,当堆中使用的内存大约是200mb,总堆大小约为3gb时,这真的是不需要的,因为其他程序正在挨饿.我尝试了Max/MinHeapFreeRatio参数来强制jvm减少未使

  9. java – 获取给定JVM实例中所有当前加载的类的列表

    知道给定JVM实例当前加载哪些类是很方便的.例如,有没有办法让他们通过JVisualVM?

  10. java – JVM Spec,JVM Implementation,JVM Runtime之间的区别

    我读了以下几个字,但我想知道它们之间的差异……JVM规范,JVM实现,JVM运行时解决方法JVMSpec:描述JVM应如何表现的文档.JVM实现:基于JVMSpec的JVM实现.JVM运行时:JVM实现的一个实例.

返回
顶部