Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在简单java代码中创建的这些JVM守护进程线程是什么?_Java_Jvm - Fatal编程技术网

在简单java代码中创建的这些JVM守护进程线程是什么?

在简单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

我有一个非常简单的java应用程序,它只是创建一个对象,调用一个函数,所有这些都在一个无限循环中

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
    SIGHUP
    上启动VM关闭进程
  • 线程支持该机制。它侦听传入的动态连接并执行VM命令。例如,它被
    jstack
    jmap
    jcmd
    实用程序使用
  • RMI TCP Accept
    线程显然接受新的RMI连接
  • RMI TCP连接
    线程为已建立的RMI连接提供服务
  • 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代码的线程。