【发布时间】:2017-09-17 19:48:50
【问题描述】:
更新
提出这个问题的另一种方式是“应用程序可用的线程数是否比内核数多?”。
原始问题
我的笔记本电脑上共有 8 个内核。我刚刚下载了最新版本的 VisualVM 并单击了VisualVM 选项卡以查看它的性能。我注意到的一件事是它使用了 32 个活动线程和 22 个守护线程。为什么用了这么多?使用超过 8 个的 IIUC 效率较低,而 IIUC JVM 知道我有多少个内核,因此它可以将线程总数限制为 8 个。
有人将此标记为重复,所以我会尝试解释一下我的要求有所不同。我不是在问如何使用 VisualVM 的特定功能。我在问为什么它运行超过 8 个线程,因为超过 8 个的 IIUC 将不是最佳的,而 VisualVM 来自 Oracle,所以我认为他们会将其设计为以最佳方式运行,所以我想知道我是否遗漏了什么,还是 Oracle 只是允许它运行比它应该运行的线程更多的线程?
【问题讨论】:
-
"Profiled 线程数限制.. 总是 32" blogs.oracle.com/nbprofiler/profiling-with-visualvm,-part-2
标签: java multithreading visualvm