首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java: Executor Service在linux上运行缓慢,而不是在Windows上

Java: Executor Service在linux上运行缓慢,而不是在Windows上
EN

Stack Overflow用户
提问于 2012-02-14 16:17:52
回答 1查看 1.1K关注 0票数 0

初始问题:

我有一个应用程序,使用ExecutorService来运行4 fixedThreadPool。当我使用这个架构时,应用程序在Windows系统上运行得更快,这是一个单线程架构。但是,当我在linux中运行ExecutorService架构时,我的应用程序的性能比单线程应用程序更差。

两台机器上的CPU和其他硬件是相同的。我甚至在不同的机器上进行了尝试,得到了相同的结果。我甚至尝试将fixedThreadPool限制为3或2,但仍然获得了较慢的性能。我遗漏的导致linux机器运行缓慢的变量是什么?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ExecutorService execSvc =
     Executors.newFixedThreadPool(NUMBER_OF_PROCESSORS);
Perform perform[] = new Perform[n];
Future<?>[] future = new Future<?>[n];
for(int i=0;i<n;i++)
   future = execSvc.submit(perform[i]);
for(int i=0;i<n;i++)
//To wait until all done
   future[i].get();

这两个操作系统都在同一台机器上运行。JDK1.6.0_20版本: windows 1.6.0_22、linux Open JAVA

编辑:

我尝试在linux上添加-Xincgc,在开始的几分钟内,代码运行的速度和预期的一样快,之后它开始变得越来越快,速度越来越慢。请注意,我创建的代码块在我的应用程序中运行了无数次,这是否表明JVM在不同的操作系统上表现不同?

试验结束后:

在尝试了4台不同的linux机器后,似乎是openJDK导致了问题。我一开始就不应该安装openJDK,但感谢@Alfabravo指出了这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-14 17:58:54

我能想到的唯一一件事就是在两个系统上的内存设置是不同的,并且你在Linux-land中的内存早些时候已经用完了。下面是一些值得尝试的事情:

  • 增加了Linux下的内存设置(duh)。在你收获之后,将每个未来的-Xmx1G或something
  • Assign发送到null。这可能效果不大,但可能值得帮助GC解决问题。

for(int = 0;i< n;i++) { futurei.get();futurei = null;}

  • 不要将Perform对象存储在数组中。只需提交它们,然后忘记它们。如果你仍然需要它们,那么在Future<Perform>中返回它们,然后在你完成它们时将它们设置为null。

  • 最好的方法可能是不一次提交所有的作业,而是保持100个未完成的作业或其他什么。将Future数组转换为列表,并获取isDone()isCancelled()的一次,只有当列表的大小低于某个阈值时才提交到池中。你需要睡一觉才能不旋转。我最近确实这样做了,所以这里有一些示例代码:http://pastebin.com/3TkkxGYT

另一件要考虑的事情是,如果您的Perform任务非常小,那么您可能只是在测试操作系统的上下文切换,而不是其他任何东西。但我不认为它会随着时间的推移而放缓。

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

https://stackoverflow.com/questions/9280321

复制
相关文章
在 Linux or windows 上后台运行服务
  此时可以访问 http://ip:8000 验证服务是否成功启动了(详细操作见另一篇文章-Python 一行搭建文件服务器)
我是胖虎啊
2022/06/27
3.3K0
在 Linux or windows 上后台运行服务
为什么我在 Linux 上使用 exa 而不是 ls?
我们生活在一个繁忙的世界里,当我们需要查找文件和数据时,使用 ls 命令可以节省时间和精力。但如果不经过大量调整,默认的 ls 输出并不十分舒心。当有一个 exa 替代方案时,为什么要花时间眯着眼睛看黑白文字呢?
用户1880875
2021/09/06
2K0
在Windows上使用Docker运行.NetCore
今天我们来说下如何在windows下使用docker运行.net core,既然是docker,那么我们首先得在windows上安装docker。
小世界的野孩子
2019/09/11
4.3K0
在Windows上使用Docker运行.NetCore
在Windows上如何后台运行JuiceFS
JuiceFS的Badger引擎改造完成以后,需要在Windows下面进行后台运行。因为现有的JuiceFS中还没有在Windows下的后台运行实现,所以需要通过其他途径解决。
用户1260683
2022/03/30
2.9K0
在Windows上如何后台运行JuiceFS
Linux在windows上共享目录
一、linux安装samba yum -y install samba 二、备份配置文件 cp /etc/samba/smb.conf /etc/samba/smb.conf.backup 三、添加访
静谧星空TEL
2021/04/27
4.4K0
Linux在windows上共享目录
在Windows上运行单节点的Cassandra
Cassandra可以安裝在很多系统上, 我是安装在windows server 2008 R2上,安装相当简单,只要把下载下来的压缩包解压缩放到一个目录下就可以了,这里主要是记录下使用体验: Cassandra官网: http://cassandra.apache.org/,下载页面 http://cassandra.apache.org/download/ Cassandra用java开发的,要求安装JVM 1.6以上,推荐 Version 6 Update 23  到Java官网下载 http://w
张善友
2018/01/19
2.4K0
在Windows上运行单节点的Cassandra
LWN: 在 Linux 上运行 macOS 程序
目前有个名叫Darling的项目活跃度不断提升,这个项目是希望能在Linux上提供一个针对macOS软件的translation layer(翻译层),有点类似Wine这个项目所做的工作。Darling比起Wine来说,成熟度差得尚远,因此开发者们现在仍在尽力能增加更多功能,使得此项目在今后的某一天能够对更多用户提供帮助。
用户6543014
2019/10/25
6.4K0
LWN: 在 Linux 上运行 macOS 程序
在Windows上以服务方式运行 MSOPenTech/Redis
ServiceStack.Redis 使用教程里提到Redis最好还是部署到Linux下去,Windows只是用来做开发环境,现在这个命题发生改变了,在Windows上也可以部署生产环境的Redis,这都要感谢微软的开放,把Redis在Windows上的环境给我们搞定了,最新的版本已经支持64位了。那么Redis在32位上的存储能力受限于可用的地址空间,也就是3GB。 要在Windows上运行64位Redis ,可以从https://github.com/MSOpenTech/redis 获取一份Redis
张善友
2018/01/29
1.4K0
在Windows上以服务方式运行 MSOPenTech/Redis
在Windows系统上的Linux容器
ghplvh
2018/01/09
5K0
flutter 在windows和linux上运行IOS UI模拟器
之前发视频总是有人留言,我用的什么模拟器,今天给大家说一下 我一般用的是device_preview这个插件,这个插件的闲置是只能做UI上的模拟,并没有真正的运行环境。近似您的应用程序在另一台设备上的外观和性能。
徐建国
2021/11/30
1.9K0
在Linux上使用Chrome运行Android应用
Google在今年的I/O上发布了一个移植跨界应用  名为App Runtime for Chrome(Beta)这个东西可以让Android系统的App运行于ChromeOS下
用户8704998
2021/06/07
3.6K0
Linux的GUI程序在Windows上使用
一,在linux机上安装xorg-x11-xauth 如果没装,启动GUI程序会提示Canno open display。 方法: yum install xorg-x11-xauth 二、打开linux服务器的sshd的X11转发功能: vi /etc/ssh/sshd_config 配置: X11Forwarding yes 三、在Windows客户端上安装X11 Server程序 Xming是运行于Windows下的X 服务器,下载Xming:http://sourceforge.net/pro
韩伟
2018/03/05
4.6K0
Linux的GUI程序在Windows上使用
在 Azure App Service 上运行 .NET 6 预览版
.NET 6 是最新的 .NET 版本,它最终将.NET Core,Framework,Xamarin和Mono的精华带入以 .NET 5 开始的统一平台。该版本目前为预览版,用于尝试激动人心的新功能,计划于2021年11月正式发布。.NET6 的最终版本将是长期支持(LTS)版,支持3年。在此处查看有关发行版的更多信息。
Edi Wang
2021/04/29
6080
在 Azure App Service 上运行 .NET 6 预览版
在QEMU上运行OPTEE
TEE越来越成为一种基础的安全技术,optee作为一种优秀的开源TEE OS正吸引了越来越多的厂商,越来越多的学习者,安智客之前也多次介绍过
安智客
2018/07/30
2.6K0
在QEMU上运行OPTEE
在Windows上安装Jenkins
apache-tomcat/bin目录下的startup.bat在windows上启动。
清菡
2020/12/02
2.4K0
在Windows上安装Jenkins
MongoDB - 在Windows上安装
1 下载MongoDB社区版, 下载链接 http://www.mongodb.org/downloads?_ga=1.129742796.1997610832.1481940266 2 安装Mong
我思故我在
2018/05/11
2.3K0
在 Windows 上安装 Composer
(2) 选中PHP安装目录下的php.exe,PHP的安装路径在环境变量 Path 中,则会自动选中,否则需要手动选中
很酷的站长
2023/02/17
2.1K0
在 Windows 上安装 Composer
在Windows上玩转Mono/Linux
这里有两个为运行于Linux的Mono系统的Live CD。. Monoppix Mono Live 这两个都包含mono 运行环境和工具. Mono Live 分发包中包含一些运行在Mono的程序 例如beagle、tomboy. 也包含一些asp.net 程序。所以他们都很大,像Monoppix有200多兆. 这些cd是Live cd也就是说你可以通过运行他们而不需要硬盘。.net开发人员使用的都是windows系统,也许想体验一下开源的.net 实现Mono。 相信不少朋友玩过虚拟机,比如VMW
张善友
2018/01/19
1.2K0
在Windows上安装Jekyll
在Windows上安装Jekyll Jekyll介绍 jekyll是一个简单的免费的Blog生成工具,类似WordPress。但是和WordPress又有很大的不同,原因是jekyll只是一个生成静态网页的工具,不需要数据库支持。但是可以配合第三方服务,例如Disqus。最关键的是jekyll可以免费部署在Github上,而且可以绑定自己的域名。 Jekyll团队没有正式支持在Windows上使用Jekyll,官方不建议在Windows上使用Jekyll。 安装 Ruby 首先,点击下面的按钮,下载与
程序员鹏磊
2018/02/09
1.3K0
在Windows上安装Jekyll
点击加载更多

相似问题

Javamail在Windows上运行,而不是在Linux上运行

21

PHP站点在linux上运行,而不是在windows上运行。

11

在linux上正确运行程序,而不是在windows上运行程序

11

Python: MySQLdb在Linux上运行得很好,而不是Windows上。

11

ezxml在Windows上运行缓慢

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文