首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何告诉Hotspot JVM是使用单处理器还是多处理器线程同步?

问如何告诉Hotspot JVM是使用单处理器还是多处理器线程同步?
EN

Stack Overflow用户
提问于 2009-07-29 14:42:45
回答 1查看 1.6K关注 0票数 2

这台机器是双核的,操作系统使用多处理器内核。为了运行一些性能评估,我希望将JVM的线程亲和性设置为单核。然而,我担心我会得到扭曲的性能测量,因为JVM可能没有意识到它现在被限制在单个内核上,但仍然使用多处理器原语进行线程同步和垃圾收集。虽然垃圾收集器可以从命令行调优,但这对于线程同步是不可能的。

现在,JVM的线程主要使用(*)OS线程。因此,也许问题应该是“OSes (Windows/Linux)在多线程应用程序中使用正确的同步原语吗?通过设置相应进程的线程亲和性,这些多线程应用程序只能使用单个内核。”

(*)在Windows上并非如此,在Windows中,JVM在调用操作系统之前会自动旋转。该行为可以通过-XX:+UseSpinning和-XX:PreBlockSpin设置进行控制。

EN

回答 1

Stack Overflow用户

发布于 2009-07-30 12:44:40

如果您只设置JVM的亲和性,那么结果将在某种程度上受到影响。即使JVM 100%地运行在单核机器上,OS内核和其他用户空间代码仍将使用额外的核心。这意味着更少的上下文切换开销,因此具有不同的性能特征。

我只会让第二个核心失效。假设您使用的是windows XP:通过添加以下内容编辑c:\boot.ini

代码语言:javascript
复制
/onecpu

添加到boot options列表中,然后重新启动机器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1200776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档