在简单java代码中创建的这些JVM守护进程线程是什么?
我有一个非常简单的java应用程序,它只是创建一个对象,调用一个函数,所有这些都在一个无限循环中在简单java代码中创建的这些JVM守护进程线程是什么?,java,jvm,Java,Jvm,我有一个非常简单的java应用程序,它只是创建一个对象,调用一个函数,所有这些都在一个无限循环中 public class h { public static void main( String[] args) { while(true) { B b = new B(); b.print(); } } } class B { public void print() { S
public class h {
public static void main( String[] args) {
while(true) {
B b = new B();
b.print();
}
}
}
class B {
public void print() {
System.out.println("Hello I'am class B");
}
}
打开jvisualvm
我看到JVM创建了10个线程,只有一个活动线程是主线程和9个守护进程
这9个线程的用途是什么
其中有人与Garabage系列有任何关系吗?
注:
java的输出-版本:
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
操作系统:Arch Linux 4.8.6-1
引用处理程序
用于处理引用
s(SoftReference
,WeakReference
,PhantomReference
及其子类),终结器
线程调用可终结对象的finalize()
方法
JMX
和RMI
线程允许您监视正在运行的JVM
我不知道其他两个线程是做什么的。我只知道java应用程序的默认线程是最下面的5个线程。尽管每个JVM可能会为不同的任务使用不同的线程。如果一个线程被设置为deamon,则意味着JVM将关闭,即使deamon线程仍在运行。“main”线程是非deamon线程,这意味着一旦“main”线程结束,JVM就会关闭 关于他们的任务,基本上他们的名字告诉他们做什么。“finallizer”线程负责垃圾收集(主要是)。“附加侦听器”、“信号分配器”和“引用处理程序”是执行其他后台任务的线程。
- 线程负责将垃圾收集器发现的弱引用、软引用和虚引用添加到它们的注册引用中
- 线程运行准备完成的对象的
方法finalize
- 等待特定的操作系统信号并处理它们。特别是,它在
上进行线程转储,并在SIGQUIT
、SIGTERM
、SIGINT
上启动VM关闭进程SIGHUP
- 线程支持该机制。它侦听传入的动态连接并执行VM命令。例如,它被
、jstack
和jmap
实用程序使用jcmd
线程显然接受新的RMI连接RMI TCP Accept
线程为已建立的RMI连接提供服务RMI TCP连接
运行RMI后台任务,如RMI调度程序
线程在需要时终止JMX连接JMX服务器连接超时
引用处理程序
,终结器
和部分RMI调度程序
与GC相关。循环是infinite@progy_rock真的吗?@progy_rock,我的错,我会改正的description@n247s是的while(true){}
是一个无限循环。您是如何启动java应用程序的?如何使用RMI
监视运行中的JVM?RMI被用作VisualVM和运行中的JVM之间的JMX传输机制。谢谢,但我相信这个答案需要大量研究才能理解这里写的每一个字。@ShadyAtef确实,简而言之,你不需要知道。顺便说一句,如果你做一个线程转储,你会发现更多的线程,比如GC和编译器线程。这些只是运行Java代码的线程。