更新
问这个问题的另一种方法是:“有比内核更多的线程提供给应用程序吗?”
原始问题
我的笔记本电脑上一共有8个核心。我刚刚下载了VisualVM的最新版本,并点击了VisualVM选项卡来查看它的性能。我注意到的一件事是,它使用32个活动线程和22个守护进程线程。为什么要用这么多?使用8以上的IIUC效率较低,而IIUC JVM知道我有多少内核,因此它可以将线程总数限制在8个。
有人把这个标记为重复,所以我会试着解释一下我要问的是什么。我不是在问如何使用VisualVM的一个特定特性。我在问为什么它运行的线程超过8个,因为IIUC超过8个将不是最优的,而VisualVM来自于Oracle,所以我想他们会设计它来优化功能,所以我想知道我是不是遗漏了什么,还是只是允许它运行比它应该运行的线程更多的线程?
发布于 2017-09-17 20:09:38
仅仅因为您有50个VisualVM线程正在运行,这并不一定意味着所有这些线程都应该同时工作。如果对“are”列进行排序,您将看到只有前7个或8个线程正在积极运行。线程的休息正在休眠或等待I/O。
https://stackoverflow.com/questions/46268239
复制相似问题