在我的计算机上启动JVM实例,并在
main()
中运行无限休眠的简单类时,除了主线程外,我可以看到JVM中的四个关键线程:
- Attach Listener
- Reference Handler
- Finalizer
- Signal Dispatcher
- DestroyJavaVM
- 附加侦听器: 动态附加由目标JVM中的附加侦听器线程处理。当第一个附加请求发生时,会启动此线程。
- 信号分派器: 当操作系统向JVM发出信号时,信号分派器线程将把信号传递给相应的处理程序。
- 引用处理器: 高优先级线程以排队等待挂起的引用。GC创建了一个简单的引用链接列表需要进行处理,该线程会快速将它们添加到正确的队列并通知ReferenceQueue监听器。
- 终结者: 终结器线程调用终结器方法。
- DestroyJavaVM: 在程序退出时,此线程卸载Java VM。大多数情况下,它应该处于等待状态。