• 请不要在回答技术问题时复制粘贴 AI 生成的内容
burnbrid
V2EX  ›  程序员

Java 线程会莫名其妙的消失

  •  
  •   burnbrid · Jan 17, 2020 · 6092 views
    This topic created in 2484 days ago, the information mentioned may be changed or developed.

    我们生产环境,总是有 JAVA 线程莫名其妙的消失,有没有什么软件可以看到 JVM 什么时候把这些线程回收了?或者可以找到证据来证明这个线程确实是被 JVM 回收了? 我们从日志上看,这个线程肯定是运行一半被回收了,但是找不到证据。各位大神怎么找证据?

    14 replies  •  2020-01-19 04:34:09 +08:00
    wysnylc
    wysnylc
    Jan 17, 2020
    1
    抛异常了而且你们捕获了但是没打印栈吧
    chendy
    chendy
    Jan 17, 2020
    2
    线程不会无缘无故地消失,要么出异常了要么跑完了
    目测是异常处理不当丢信息了…
    awfe
    awfe
    Jan 17, 2020
    3
    有异常了吧
    yumenawei
    yumenawei
    Jan 17, 2020
    4
    我猜你们是用的默认的线程池,然后线程莫名没了。
    matepi
    matepi
    Jan 17, 2020
    5
    刚好我的帖里谈到的。没有 catch Throwable,只 catch Exception 了?
    https://www.v2ex.com/t/638609
    Raymon111111
    Raymon111111
    Jan 17, 2020
    6
    全局 try catch
    palmers
    palmers
    Jan 17, 2020
    7
    给自己的线程定义名称 然后再排查 楼上说的异常信息吃掉 也检查一下 不然我认为没有办法定位
    guyeu
    guyeu
    Jan 17, 2020
    8
    不要 catch throwable,全局设置一个默认的异常回调
    ```java
    Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {...});
    ```
    cheng6563
    cheng6563
    Jan 17, 2020 via Android
    9
    另外,如果出现 oom 错误被捕获了,错误处理里的代码又出现 oom,处理不当是可能线程挂掉又没有日志的。建议启动参数时配置当 oom 时报错并直接干掉整个进程。
    btnokami
    btnokami
    Jan 18, 2020
    10
    找个 Profiler 或者查查 thread dump 吧
    zhaorunze
    zhaorunze
    Jan 18, 2020
    11
    @matepi Error 不 catch 日志不会打印吗?
    gaius
    gaius
    Jan 18, 2020 via Android
    12
    run 里面直接包 try catch,可以参考线程池 runWorker 里面是怎么写的
    matepi
    matepi
    Jan 18, 2020 via iPhone
    13
    @zhaorunze syserr 有配 logger 的话会有,但很多的 logger 配法都会把默认 out 和 err 丢掉。
    alexgor
    alexgor
    Jan 19, 2020 via Android
    14
    笑死
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2834 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 10:52 · PVG 18:52 · LAX 02:52 · JFK 05:52
    ♥ Do have faith in what you're doing.