gpt4 book ai didi

java - DestroyJavaVM 线程始终运行

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:48 25 4
gpt4 key购买 nike

在分析我的应用程序时,我遇到了一个奇怪的行为 - DestroyJavaVM 线程始终在运行 - 100% 的时间。

enter image description here在对这个主题做了一些研究之后,网上几乎没有任何有值(value)的信息,我所理解的是这个线程应该是 unload the JVM upon exit .

如果是这样,为什么从我启动我的应用程序的第一刻起,这个线程就有 100% 的时间处于 RUNNING 状态?它不会消耗宝贵的资源并因此可能导致 OutOfMemoryError(就像我有时遇到的那样)吗?

是否有任何关于此线程实际执行的操作以及触发其初始化的官方引用?

谢谢

最佳答案

发生这种情况是因为大多数应用程序都是在线程中运行的。

全部POJO应用程序首先调用 main 方法。在最简单的情况下,此方法将完成所有工作,创建对象、调用方法等。main 完成后,使用 DestroyJavaVM 告知 JVM 关闭等待所有non-daemon threads的线程在开始工作之前完成。这是为了确保您创建的任何非守护线程在 JVM 被拆除之前运行完成。

然而,具有 GUI 的应用程序通常作为多个线程运行。一种用于监视系统事件,例如键盘或鼠标事件。一种用于维护窗口和显示等。这种应用程序的 main 方法可能只会启动所有必需的线程并退出。它仍然会创建 DestroyJavaVM 线程,但现在它所做的只是等待您创建的所有线程完成,然后再拆除 VM。

因此,任何创建线程并完全依赖其功能的应用程序将始终有一个 DestroyJavaVM 线程等待它完成。由于它所做的只是加入所有其他正在运行的线程,因此它不会消耗任何资源。

关于java - DestroyJavaVM 线程始终运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com