为什么 VisualVM 运行 VisualVM 本身有 50 个线程?
Why is VisualVM running 50 threads for VisualVM itself?
更新
提出这个问题的另一种方式是 "Is there ever a point to having more threads available to the application than there are cores?"。
原问题
我的笔记本电脑总共有 8 个内核。我刚刚下载了最新版本的 VisualVM,然后单击 VisualVM
选项卡查看其性能。我注意到的一件事是它使用了 32 个活动线程和 22 个守护线程。为什么它使用这么多?使用超过 8 个的 IIUC 效率较低,而 IIUC JVM 知道我有多少个内核,因此它可以将线程总数限制为 8 个。
有人将此标记为重复,所以我将尝试以不同的方式解释我的问题。我不是在问如何使用 VisualVM 的特定功能。我问为什么 运行 超过 8 个线程,因为 IIUC 超过 8 个线程不是最佳的,而 VisualVM 来自 Oracle,所以我认为他们会设计它以实现最佳功能,所以我想知道是否我遗漏了一些东西,或者 Oracle 只是允许它 运行 的线程多于应该 运行?
仅仅因为您有 50 个 VisualVM 线程 运行,并不一定意味着所有这些线程都应该同时处于活动状态。如果按 "Running" 列排序,您会看到只有前 7 或 8 个线程处于活动状态 运行。其余线程正在休眠或等待 I/O。
更新
提出这个问题的另一种方式是 "Is there ever a point to having more threads available to the application than there are cores?"。
原问题
我的笔记本电脑总共有 8 个内核。我刚刚下载了最新版本的 VisualVM,然后单击 VisualVM
选项卡查看其性能。我注意到的一件事是它使用了 32 个活动线程和 22 个守护线程。为什么它使用这么多?使用超过 8 个的 IIUC 效率较低,而 IIUC JVM 知道我有多少个内核,因此它可以将线程总数限制为 8 个。
有人将此标记为重复,所以我将尝试以不同的方式解释我的问题。我不是在问如何使用 VisualVM 的特定功能。我问为什么 运行 超过 8 个线程,因为 IIUC 超过 8 个线程不是最佳的,而 VisualVM 来自 Oracle,所以我认为他们会设计它以实现最佳功能,所以我想知道是否我遗漏了一些东西,或者 Oracle 只是允许它 运行 的线程多于应该 运行?
仅仅因为您有 50 个 VisualVM 线程 运行,并不一定意味着所有这些线程都应该同时处于活动状态。如果按 "Running" 列排序,您会看到只有前 7 或 8 个线程处于活动状态 运行。其余线程正在休眠或等待 I/O。