为什么VisualVM为VisualVM本身运行50个线程?

时间:2017-09-17 19:48:51

标签: java multithreading visualvm

更新

提出这个问题的另一种方式是“应用程序有多少线程可用于核心?”。

原始问题

笔记本电脑上总共有8个核心。我刚刚下载了最新版本的VisualVM,并点击return标签查看它的运行情况。我注意到的一件事是它使用了32个活动线程和22个守护程序线程。它为什么使用这么多?使用8个以上的IIUC效率较低,而JUC的IIUC知道我拥有多少个核心,因此它可以将线程总数限制为8个。

有人认为这是重复的,所以我会试着解释一下我的问题有点不同。我不是在问如何使用VisualVM的特定功能。我问为什么它运行超过8个线程,因为IIUC超过8个将不是最优的而且VisualVM来自Oracle所以我认为他们会设计它以最佳运行,所以我想知道我是否遗漏了某些东西,或者Oracle是否允许它运行的线程多于它应该运行的线程?

1 个答案:

答案 0 :(得分:1)

仅仅因为你有50个运行的VisualVM线程,它并不一定意味着所有这些线程应该同时正在工作。如果你对" Running"进行排序在列中,您将看到只有前7个或8个线程正在运行。线程的休息正在休眠或等待I / O.