首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java命令学习系列(二)——Jstack

    jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

    02

    Android 产生ANR后的Trace文件的解析

    第一个框中第一二行说明了发生ANR的进程ID,名称和时间 第三个框中 “main” prio=5 tid=1 Native 说明了线程名称,线程优先级,线程锁id和线程状态。tid不是线程id,是一个在Java虚拟机中用来实现线程锁的变量,线程状态分为以下几类: 状态 值 说明 THREAD_ZOMBIE 0 TERMINATED 线程死亡,终止运行 THREAD_RUNNING 1 RUNNABLE or running now 线程可运行或正在运行 THREAD_TIMED_WAIT 2 TIMED_WAITING in Object.wait() 执行了带有超时参数的wait,sleep或join参数 THREAD_MONITOR 3 BLOCKED on a monitor 线程阻塞,等待获取对象锁 THREAD_WAIT 4 执行了无超时参数的wait()函数 THREAD_INITIALIZING 5 allocated not yet running 新建,正在初始化,为其分配资源 THREAD_STARTING 6 started not yet on thread list 新建,正在启动 THREAD_NATIVE 7 off in a JNI native method 正在执行JNI本地函数 THREAD_VMWAIT 8 waiting on a VM resource 正在等待VM资源 THREAD_SUSPENDED 9 suspended usually by GC or debugger 线程暂停,通常是由于GC或者debug被暂停 特别说明线程状态为MONITOR和SUSPEND。MONITOR状态一般是类的同步块或者同步方法造成的,而SUSPEND状态是debugger的时候会出现,可以用来区别是不是真的是用户正常操作跑出来ANR

    03

    线程基础必知必会(一)

    从这篇文章开始,我将利用两篇文章讲解线程的基础知识,本篇文章涉及到了 创建线程、线程等待、线程暂停、线程终止 和 线程状态检测 相关的内容。这篇文章及其下一篇文章是这个专题的基础中的基础,因此我会用简单易懂的语言和示例代码来讲解,以求您在阅读完文章后能为后续线程其他只是打下坚实的基础。学习这张篇文章你需要具备 C# 语言基础和 Microsoft Visual Studio 2015 及以上任何版本。 所谓的线程,就是操作系统利用某种方式将计算单元分割成大量的虚拟进程,然后赋予这些虚拟进程一定的计算能力。这里需要注意,因为创建和使用多线程是一个消耗大量操作系统资源的过程,因此当只有一个单核处理器时多线程会导致操作系统忙于管理这些线程,进而无法运行程序甚至有时操作系统本身也会无法正常运行(即使操作系统访问处理器的优先级最高,也依然会出现这种问题)。因此目前主流的处理器都是多核心处理器,并且计算能力也是相当的高,但是我们不能因为硬件提高了而忽略软件的发展,目前主流的开发语言都支持多线程处理。废话不多说现在我们开始线程基础的第一篇。

    01

    Android 产生ANR后的Trace文件的解析

    第一个框中第一二行说明了发生ANR的进程ID,名称和时间 第三个框中 "main" prio=5 tid=1 Native 说明了线程名称,线程优先级,线程锁id和线程状态。tid不是线程id,是一个在Java虚拟机中用来实现线程锁的变量,线程状态分为以下几类: 状态 值 说明 THREAD_ZOMBIE 0 TERMINATED 线程死亡,终止运行 THREAD_RUNNING 1 RUNNABLE or running now 线程可运行或正在运行 THREAD_TIMED_WAIT 2 TIMED_WAITING in Object.wait() 执行了带有超时参数的wait,sleep或join参数 THREAD_MONITOR 3 BLOCKED on a monitor 线程阻塞,等待获取对象锁 THREAD_WAIT 4 执行了无超时参数的wait()函数 THREAD_INITIALIZING 5 allocated not yet running 新建,正在初始化,为其分配资源 THREAD_STARTING 6 started not yet on thread list 新建,正在启动 THREAD_NATIVE 7 off in a JNI native method 正在执行JNI本地函数 THREAD_VMWAIT 8 waiting on a VM resource 正在等待VM资源 THREAD_SUSPENDED 9 suspended usually by GC or debugger 线程暂停,通常是由于GC或者debug被暂停 特别说明线程状态为MONITOR和SUSPEND。MONITOR状态一般是类的同步块或者同步方法造成的,而SUSPEND状态是debugger的时候会出现,可以用来区别是不是真的是用户正常操作跑出来ANR

    02

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券